【Google Apps Script】スプレッドシートのコピーを作成する方法

こんにちは、nishi_talk(@nishi_talk)です。
今回はGoogle Apps Scriptを使用して、スプレッドシートのコピーを作成する方法をご紹介します。



毎月同じテンプレートのシートをGoogle Apps Scriptを使用してシート名を「YYYY年MM月」みたいな感じで毎月作成できるようにします。

/**
 *  スプレッドシートのコピー作成
 */

function AutoSheetCopy(){

  // スプレッドシートを取得
  var sheet = SpreadsheetApp.getActiveSpreadsheet();
  // コピー元のシートを取得(今回は template というシート)
  var templateSheet = sheet.getSheetByName('template');

  // シートをコピー
  sheet.insertSheet(getmonth(), 0, {template: templateSheet});
}

// 現在の月と週数を取得する関数
function getmonth(){
  // 現在の日時を取得
  var today = new Date();
  // 現在の日時から、月を算出
  var out = today.getYear() + "年";
  out += (today.getMonth()) + "月";

  return out; // yyyy年mm月の文字列を返す
}

まずはテンプレートのシートを作成。シート名を「template」に変更します。
上記のコードを説明します。

シート名が「yyyy年mm月」になるように現在の日時を取得してシート名を設定します。

// 現在の月と週数を取得する関数
function getmonth(){
  // 現在の日時を取得
  var today = new Date();
  // 現在の日時から、月を算出
  var out = today.getYear() + "年";
  out += (today.getMonth()) + "月";

  return out; // yyyy年mm月の文字列を返す
}



変数「out」にyyyy年mm月の文字列が設定されます。
次に、コピー元のシート(template)を取得します。

var templateSheet = sheet.getSheetByName('template');

関数getmonthで取得したyyyy年mm月の文字列をシート名にして、取得したコピー元のシートをコピーします。

sheet.insertSheet(getmonth(), 0, {template: templateSheet});

あとはトリガーの時間設定で、毎月1日に関数AutoSheetCopyが発火するように設定すればOK!
毎月決まったテンプレートのシートを自動的に作成する方法をご紹介しました。