【Google Apps Script(GAS)】スプレッドシートのシートをコピーする

オンラインGAS講座 開講中!
オンライン無料体験あり!
最短4週間でGASをマスターできる
Google Apps Scriptコース』開講中!

今回はGoogle Apps Scriptを使用し、様々な方法でスプレッドシート上のシートをコピーする方法についてご紹介します。

アクティブシートをコピーする

アクティブシートをコピーするには、下記のサンプル1のようなスクリプトを使用します。

・サンプル1

function myFunction() {

var sh = SpreadsheetApp.getActiveSpreadsheet();

sh.duplicateActiveSheet();

}

こちらのサンプル1では、

var sh = SpreadsheetApp.getActiveSpreadsheet();

でスプレッドシート上のアクティブなシートを取得し、

sh.duplicateActiveSheet();

でアクティブシートをコピーしています。

今回のスクリプトでコピーされたシート名は、シート名の末尾に

「 のコピー」

と付けられます。

下記の画像は、アクティブシートである「シート1」をコピーした処理結果となります。

アクティブシートのコピー

アクティブシートのコピー

コピーされたシートの名前を指定する

コピーされたシートの名前を指定するには、下記のサンプル2のようなスクリプトを使用します。

・サンプル2

function myFunction() {

var sh = SpreadsheetApp.getActiveSpreadsheet();

sh.duplicateActiveSheet().setName(‘新シート’);

}

こちらのサンプル2では、

sh.duplicateActiveSheet().setName(‘新シート’);

で、コピーしたアクティブシートに「新シート」という名前を付けています。

新シート

新シート

既にシートが存在していた場合

既に「新シート」というシート名が存在していた場合、

「シート名「新シート」はすでに存在しています。別の名前を入力してください。」

というエラーがスクリプトエディタ上に表示されますのでご注意ください。

シート名「新シート」はすでに存在しています。別の名前を入力してください。

シート名「新シート」はすでに存在しています。別の名前を入力してください。

コピーするシート名を指定してコピーする

コピーするシート名を指定してコピーするには、下記のサンプル3のようなスクリプトを使用します。

・サンプル3

function myFunction() {

var ss_id = ‘[ここにスプレッドシートのIDを記載]’;
var sh_name = ‘テスト’; //スプレッドシートのシート名を指定
var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name); //シートを指定

sh.activate();

var activesh = SpreadsheetApp.getActiveSpreadsheet();

activesh.duplicateActiveSheet().setName(‘テスト_2’);

}

こちらのサンプル3では、

var ss_id = ‘[ここにスプレッドシートのIDを記載]’;

で変数ss_idにスプレッドシートのIDを代入し、

var sh_name = ‘テスト’;

で変数sh_nameにコピーしたいシート名を代入し、

var sh = SpreadsheetApp.openById(ss_id).getSheetByName(sh_name);

でスプレッドシートとシートを指定し、変数shに代入しています。

sh.activate();

でコピーしたいシートをアクティブシートにし、

var activesh = SpreadsheetApp.getActiveSpreadsheet();

でスプレッドシート上のアクティブなシートを取得し、

activesh.duplicateActiveSheet().setName(‘テスト_2’);

でアクティブシートをコピーして、シート名を「テスト_2」としています。

コピーするシート名を指定してコピー

コピーするシート名を指定してコピー

※関連記事

Google Apps Scriptにおいて、スプレッドシートを、スプレッドシートに紐づけられているIDを使って取得するには下記スク...