GAS(Google Apps Script ※1)を使っていて「テンプレートを元に複数のスプレッドシートを作成したい…」と思うことはないでしょうか?

例えば、社員の評価をスプレッドシートで行うとしましょう。そのとき、テンプレートで作成した社員評価票に対して、評価対象者となる人の名前や所属などを入れていきます。

もし手作業で行う場合、数人であれば負担になりませんが、100人を超える社員がいると大きな手間になってしまうものです。そこで、GASを活用することで自動的に評価票の作成を行えるのです。自動作成ができれば、空いた時間で別の業務に時間を回せるなどのメリットもあります。

そこで今回は、GASで複数のスプレッドシートを生成する方法について解説します。

GAS(※1)
GASとは、Google Apps Scriptの略であり、Googleが提供しているJavaScriptベースのスクリプト言語です。スクリプト言語を使用することで、Googleサービスを効率化できます。例えば毎日Googleスプレッドシートへ自動で株価データを挿入させたり、スプレッドシートへの権限を振ったり、ボタンを押して自動化ができます。

参考: Apps Script  |  Google Developers

複数のスプレッドシートを生成するには

複数のスプレッドシートを生成するまでの流れは以下の通りです。

  1. テンプレートの読み込み
  2. テンプレートのコピー
  3. コピーしたスプレッドシートにアクセス
  4. アクセスしたスプレッドシートを操作
  5. 1-4を繰り返す

1. テンプレートの読み込み

まずは、テンプレートとなるスプレッドシートを読み込みます。以下のコードは、テンプレートを読み込む処理です。

function main(){
    // テンプレートの読み込み
    var templateFile = DriveApp.getFileById('スプレッドシートキー');

スプレッドシートキーは、URLの「https://docs.google.com/spreadsheets/d/××××××××××/edit#gid=」の×に当てはまる部分です。

2.テンプレートのコピー

次に、読み込んだテンプレートをコピーします。

  // 出力ファイル名
    var OutputFileName = "テストファイル";
    // 出力フォルダ
    var OutputFolder = DriveApp.getFolderById('フォルダID');
    // コピー実行
    var newfile = templateFile.makeCopy(OutputFileName, OutputFolder);

スプレッドシートのコピーはmakeCopy関数で行われ、そのときファイル名と出力先フォルダの指定が必要です。今回は、ファイル名を「テストファイル」としてOutputFolderに出力しています。

3.コピーしたスプレッドシートにアクセス

コピー後は、コピーで生成されたスプレッドシートにアクセスします。

    // コピー後のファイルID取得
    var id_copy_file = newfile.getId();
    var newSheet = SpreadsheetApp.openById(id_copy_file);

アクセスするためには、スプレッドシートキーが必要になるので、コピーしたスプレッドシートのスプレッドシートキーを取得するためにgetId関数を使っています。その後、取得したスプレッドシートキーを使ってスプレッドシートにアクセスする流れです。

4. 「3」のスプレッドシートを操作

スプレッドシートにアクセス後は、スプレッドシート内のセルに対して必要な情報を更新していきます。

  //シートを選択
   var targetSheet = newSheet.getSheetByName('一般社員');
    
   // セルへの更新(評価票)
   targetSheet.getRange(8, 3).setValue("田中太郎"); //氏名
   targetSheet.getRange(9, 3).setValue("情報システム部"); // 所属部署

まずは、スプレッドシートのシートを選択します。今回は、「一般社員シート」に対して作成を行っていきましょう。シートを選択したら、評価対象者の氏名と所属部署などの情報を更新していきます。

5. 「1-4」を繰り返す

後は、ループ処理を使って上記の作業を繰り返していきましょう。繰り返すときには、GASの実行時間問題がつきまとってきます。実行時間問題とは、最大で6分間までしか処理ができないというもので、6分を超えると強制的に処理が終了してしまうのです。

実行時間問題を回避する方法は、前回の記事で解説しているので是非参考にしてください。

まとめ

今回紹介したスプレッドシートの複製は、テンプレートを元に複数のシートを作成するときに便利です。今回の記事を参考に、普段の業務を効率化してみてはいかがでしょうか。