【GAS:Google Apps Script】シートを新規スプレッドシートにコピーする

【GAS:Google Apps Script】シートを新規スプレッドシートにコピーする

GAS(Google Apps Script)の案件を手掛ける上でよく使い回す処理をファンクション化してみました。
コピーしてそのまま使うこともできますし、一部カスタマイズして使ってください。

「複数のサイトを横断的に見ないと答えにたどり着かない。。。」
そんな思いにこたえることができれば幸いです!

さて、今回は「シートを新規スプレッドシートにコピーする」処理の紹介です。

[2020.10.15] removeFileの削除に伴い、moveToを使用するように修正

処理概要

任意のシートを新規スプレッドシート(任意のフォルダ、任意のスプレッドシート名)にコピーする
【引数】
fromSheet : コピーするシートのSheetオブジェクト
toFolder : 作成先のフォルダのFolderオブジェクト
newSpreadsheetName : 作成するスプレッドシートのファイル名(文字列)
【返り値】
作成した(任意のシートをコピーした)スプレッドシートのSpreadsheetオブジェクト

ファンクション

function copyToNewSpreadsheet(fromSheet, toFolder, newSpreadsheetName) {
  let newFile = DriveApp.getFileById(SpreadsheetApp.create(newSpreadsheetName).getId());
  let newSpreadsheet = SpreadsheetApp.openById(newFile.moveTo(toFolder).getId());
  let newSheet = fromSheet.copyTo(newSpreadsheet );
  newSheet.setName(fromSheet.getSheetName());
  newSpreadsheet.deleteSheet(newSpreadsheet.getSheets()[0]);
  return newSpreadsheet;
}

内部処理の説明

let newFile = DriveApp.getFileById(SpreadsheetApp.create(newSpreadsheetName).getId());

引数の newSpreadSheetName というファイル名でスプレッドシートを新しく作成しています。
作成したスプレッドシートのFileオブジェクトを newFile という変数に入れています。

let newSpreadsheet = SpreadsheetApp.openById(newFile.moveTo(toFolder).getId());

新しく作成したスプレッドシートはマイドライブ直下にあります。(作る場所は指定できない)
なので、Fileオブジェクトの moveTo を使って引数の toFolder に移動します。
同時に newFile のSpreadsheet オブジェクトを newSpreadsheet という変数に入れています。

let newSheet = fromSheet.copyTo(newSpreadsheet );

作成したスプレッドシートにコピーしたいシートのコピーを作成します。
コピーして作成したシートを newSheet という変数に入れています。

newSheet.setName(fromSheet.getSheetName());

コピーして作成したシートは「○○ のコピー」というシート名になっているので、コピー元のシート名をコピーして作成したシートのシート名として設定します。

newSpreadsheet.deleteSheet(newSpreadsheet.getSheets()[0]);

新規で作成したスプレッドシートには必ず「シート1」というシート名のシートがあるので、この不要なシートを削除します。
copyTo でコピーして作成されたシートはスプレッドシートの一番右にあるので、「シート1」は必ず一番左(index : 0)にあるというわけです。

まとめ

今回は簡単に「シートを新規スプレッドシートにコピーする」処理について紹介しました。

Google Apps Script は無料枠でも十分に使えとても便利です。
OSに依存せずに使えることから様々な環境で自動化・省力化してスローライフを楽しみましょう!

GASでの簡易システム制作に関するお問い合わせはこちらからお待ちしております。
LancersMENTAでも活動していますので、そちらからお仕事を依頼して頂けます。