今回は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を記載]’; 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」としています。
※関連記事