📗
Googleスプレッドシートの大量データ転送問題の解決法:IMPORTRANGEエラーを回避するGASスクリプト
- 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