他のスプレッドシートのシートをコピーする【GAS】
Google Apps Scriptの入門初心者として最初の頃に立ちはだかる壁はおそらく「他のシートを別のシートへとコピーする」という作業でしょう。つい、シートを追加するということで、insertSheetメソッドを使ってしまいますが、このメソッドは同じスプレッドシート内のデータしか参照することが出来ません。
そこで使うのがcopyToメソッドです。書式もまるごと全てコピーしてくるので便利です。
リンク
今回使用するスプレッドシート
ソースコード
var ssid = "コピー元のスプレッドシートID"
function copyman() {
//コピー先とコピー元を指定
var ss = SpreadsheetApp.getActiveSpreadsheet()
var source = SpreadsheetApp.openById(ssid);
//コピーするシートを指定
var sheet = source.getSheetByName("testdata");
//コピーする
sheet.copyTo(ss).setName("コピーだよ")
}
- コピー元のスプレッドシートのIDをssidに格納する
- ssには現在のコピー先のスプレッドシートを指定する
- sourceにはssidを使ってコピー元のスプレッドシートを指定する
- sheetにはコピー元のシート名を指定してシートを取得
- sheet.copyToでssを指定する事でコピーする
- このままでは、○○のコピーというシート名になってしまうので、setNameでシート名を指定する
単純な事なのですが、間違えやすく嵌る要素なので注意が必要です。
図:無事にコピーされました

