📗

Googleスプレッドシートの大量データ転送問題の解決法:IMPORTRANGEエラーを回避するGASスクリプト

2023/11/29に公開
  • Googleスプレッドシートの importrange の読み込み量があまりにも多くなってしまって、「インポート範囲の内部エラーです。」というエラーが出るようになった
  • importrange ではなく、GASで自動取得するようにした(トリガーは一時間おきに設定)
  • とりあえず、全シートを読み込むGASを自分用にメモしておく
function transferData() {
  // ソース(送り元)スプレッドシートのIDとシート名を設定します
  var sourceSpreadsheetId = 'ソーススプレッドシートのID';
  var sourceSheetName = 'ソースシート名';

  // ターゲット(受け側)のシート名を設定します
  var targetSheetName = 'ターゲットシート名';

  // ソーススプレッドシートを開き、データを読み込むシートを特定します
  var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
  var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);

  // 現在のスプレッドシート(このスクリプトが紐づいているスプレッドシート)を取得し、
  // 更新するシートを特定します
  var targetSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var targetSheet = targetSpreadsheet.getSheetByName(targetSheetName);

  // ソースシートからデータ範囲を取得し、その値を読み込みます
  var sourceRange = sourceSheet.getDataRange();
  var sourceValues = sourceRange.getValues();

  // ターゲットシートの内容をクリアします
  targetSheet.clear();

  // ソースシートから読み込んだデータをターゲットシートにコピーします
  // getRangeのパラメータは、開始行、開始列、行数、列数です
  targetSheet.getRange(1, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues);
}

Discussion