GASでスプレッドシートのシートをコピーする方法(copyToメソッド)

Google Apps Script(GAS)でスプレッドシートにあるシートをコピーする方法を解説します。

GASに用意されているcopyToメソッドを使い、スプレッドシート上のシートをスクリプト実行でコピーする処理が実装できます。

スプレッドシートのシートコピーをGASで実現

スプレッドシートで行われる処理の多くは、Google Apps Script(GAS)によるスクリプトで実行することができます。

セルの読み込み・書き込みなどの各種操作に加えて、スプレッドシートファイルに存在するシートのコピーもGASで実行可能です。

Google Apps Script(GAS)でコピーしたいスプレッドシートのシート

例えば、スプレッドシートに雛形シートを予め用意しておき、GASの処理実行時にシートをコピーして値を入力するといったことができます。

GASのシートコピーはcopyToメソッド

Google Apps Script(GAS)でスプレッドシートのシートをコピーするメソッドとして、copyToメソッドが用意されています。

Sheetオブジェクト.copyTo(コピー先Spreadsheetオブジェクト)

copyToメソッドは、Sheetオブジェクトで実行可能です。

コピーしたいSheetオブジェクトでcopyメソッドを実行すると、実行元のシートがコピーされます。

copyメソッドの引数には、コピー先のスプレッドシートを指定します。

コピーするシートが含まれるスプレッドシートを指定すれば、スプレッドシート内のコピーになります。

異なるスプレッドシートを指定すると、スプレッドシート間のシートのコピーになります。

同一スプレッドシートにシートをコピーするGASサンプルコード

実際にGoogle Apps Script(GAS)でスプレッドシートのシートをコピーするサンプルコードを解説します。

GASサンプルコードを実行すると、スクリプトに紐づいているスプレッドシートのシートが、同じスプレッドシート内でコピーされます。

Google Apps Script(GAS)でスプレッドシート内のシートを同一スプレッドシート上にコピーするサンプルスクリプト

function sheetCopy() {
//スクリプトに紐付いたスプレッドシートを読み込む
let mySpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
//アクティブなシートをコピー対象のシートとして読み込む
let copySheet = mySpreadsheet.getActiveSheet();
//コピー対象シートを同一のスプレッドシートにコピー
copySheet.copyTo(mySpreadsheet);
}

GASのサンプルコードを実行すると、「コピーしたいシート」シートが、同一スプレッドシート上で、「コピーしたいシート のコピー」としてコピーされます。

Google Apps Script(GAS)でスプレッドシートのシートをコピーするcopyToメソッドを解説

デフォルトではコピーしたシート名称はcopyToメソッドでは指定できないため、別途setNameメソッドで付けたい名前に変更する必要があります。

シートを異なるスプレッドシートファイルにコピーするGASサンプルコード

先程は同一スプレッドシート内でシートのコピーを行いましたが、異なるスプレッドシートファイルにシートのコピーするGASサンプルスクリプトも紹介します。

スプレッドシートのシートを異なるスプレッドシートにコピーするGoogle Apps Script(GAS)のサンプルコード

function sheetCopyAnotherFile() {
//スクリプトに紐付いたアクティブなシートをコピー対象のシートとして読み込む
let copySheet = SpreadsheetApp.getActiveSheet();
//シートのコピー先のスプレッドシートを読み込む
let destSpreadsheet = SpreadsheetApp.openById("コピー先のスプレッドシートのID");
//コピー対象シートを同一のスプレッドシートにコピー
let newCopySheet = copySheet.copyTo(destSpreadsheet);
//コピーしたシート名を変更する
newCopySheet.setName("******")
}

copyToメソッドの引数に指定したスプレッドシートにシートがコピーされます。

まとめ・終わりに

今回、Google Apps Script(GAS)でスプレッドシートのシートをコピーする方法を紹介しました。

GASではsheetオブジェクトにcopyToメソッドが用意されていて、引数に指定したスプレッドシートにシートをコピーできます。

シートと同じスプレッドシートも指定できますし、異なるスプレッドシートの指定も可能です。

スプレッドシートのコピーをGASスクリプトで実行したい場合は、紹介したサンプルコードを参考に実装してみてください。