他のスプレッドシートのシートをコピーする【GAS】
Google Apps Scriptの入門初心者として最初の頃に立ちはだかる壁はおそらく「他のシートを別のシートへとコピーする」という作業でしょう。つい、シートを追加するということで、insertSheetメソッドを使ってしまいますが、このメソッドは同じスプレッドシート内のデータしか参照することが出来ません。
そこで使うのがcopyToメソッドです。書式もまるごと全てコピーしてくるので便利です。
リンク
今回使用するスプレッドシート
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 |
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でシート名を指定する
単純な事なのですが、間違えやすく嵌る要素なので注意が必要です。
図:無事にコピーされました