【GAS入門】別のスプレッドシートからデータを取得して転記する方法
うーん、GASを使って別のスプレッドシートからデータを取得したりコピーしたりする方法が知りたいなぁ…。どうやればいいんだろう?
猫男
catman
それなら、catmanにおまかせ!GASを使ってスプレッドシート間でデータを操作するのは思ったより簡単なことなんだ。
GASで別のスプレッドシートからデータを取得して転記する方法
GASでは、スプレッドシートIDを指定することで、別のスプレッドシートを開き、その中のデータを取得できます。
さらに、取得したデータを現在のスプレッドシートに転記することもできるのです。

function importDataFromAnotherSpreadsheet() {
var sourceSpreadsheetId = 'コピー元のスプレッドシートID';
var sourceSheetName = 'シート1';
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var sourceSpreadsheet = SpreadsheetApp.openById(sourceSpreadsheetId);
var sourceSheet = sourceSpreadsheet.getSheetByName(sourceSheetName);
var values = sourceSheet.getDataRange().getValues();
targetSheet.getRange(1, 1, values.length, values[0].length).setValues(values);
}
このコードを実行すると、指定した別のスプレッドシートのデータを取得し、現在開いているスプレッドシートに転記できるはずです。
SpreadsheetApp.openById():スプレッドシートIDを指定して別のスプレッドシートを開くgetSheetByName():指定した名前のシートを取得するgetDataRange():データが入力されている範囲を取得するgetValues():範囲内の値を2次元配列で取得するsetValues():取得した値を別のシートに書き込む
これならデータを簡単にコピーして別のスプレッドシートに転記できるんだね!2つのシートを両方ともスプレッドシートIDで指定したいならどうする?
猫男
catman
オッケー。次はこれを活用してみるといい。
function transferData() {
var sourceSpreadsheetId = 'SOURCE_SPREADSHEET_ID'; // スプレッドシートAのID
var sourceSheet = SpreadsheetApp.openById(sourceSpreadsheetId).getActiveSheet();
var destinationSpreadsheetId = 'DESTINATION_SPREADSHEET_ID'; // スプレッドシートBのID
var destinationSheet = SpreadsheetApp.openById(destinationSpreadsheetId).getActiveSheet();
var values = sourceSheet.getDataRange().getValues(); // データの取得
destinationSheet.getRange(1, 1, values.length, values[0].length).setValues(values); // データの書き込み
}
– このスクリプトはtransferDataという関数で、スプレッドシートAからBへデータを転記します。
– sourceSpreadsheetIdとdestinationSpreadsheetIdを準備したスプレッドシートのIDに変更することで実現できます。
– getDataRange()やsetValues(values)でスプレッドシート間のデータの転送を行っています。
ありがとう!なんだかいけそうな気がする
猫男
catman
ふふふ。その調子だ