【GAS入門】スプレッドシートのシートを定期的に自動生成する方法

GAS
GAS
この記事は約4分で読めます。
スポンサーリンク

今回は僕がGASを学び始めた頃にまずやったものをご紹介します。

業務効率化をするようになった第一歩なので本当にしょうもない、大したことない効率化ですが笑、小さなことから1つ1つやってきたのが今の効率化スキルに繋がっているので、ぜひトライしてみてください。

ちなみにこの方法だと、週次定例のような定期イベントで使うシートをコピーする手間を省けます。(多分週10秒くらいの業務効率化笑)

GASでシートを定期的に自動生成する方法のアウトプットイメージ

今回はこのような特定のフォーマットのシートを週1回、自動的に生成してくれる仕組みを作ってみようと思います。

「temp」というシートをフォーマットとして、毎週決まった曜日に1週間後の同じ曜日に使うシートを生成します。コード内の1箇所とトリガーの起動タイミングの2つを変えれば、繰り返し実行する頻度を変えることができるので、月次だったり日次の定期イベントにも利用頂けます!

それでは作り方をみていきましょう。

GASでスプレッドシートのシートを定期的に自動生成する

それでは、GASを使ってスプレッドシートのシートを定期的に自動生成する方法を見ていきましょう!

テンプレートになるシートを作る

まずは週次で使うシートのFMTを1つ作ります。
今回の仕組みではこのFMTを毎回コピーしますので、更新する場合はこのFMTを更新していきましょう。

スクリプトエディタを開く

続いて、例のごとくスクリプトエディタを開きます。

スクリプトを貼り付ける

スクリプトエディタのコーディング箇所に以下のコードを貼り付けて保存します。
なお、今回は週1回動かすようにするので「today.setDate(today.getDate() + 7);」のところで、今日の日付に+7した日付を設定しているので、間隔を調整したい場合はここを変更します。

// シート"temp"を複製する関数
function AutoSheetCopy(){
  //アクティブなスプレッドシートを取得し、ssに代入
  var ss = SpreadsheetApp.getActiveSpreadsheet(); 
  //tempという名前のシートを取得し、templateSheetに代入
  var templateSheet = ss.getSheetByName('temp');
  //通常処理(catchとセット)//
  try{
    //取得したスプレッドシートの名前、挿入場所(0は先頭)、利用テンプレートを指定
    ss.insertSheet(getName(), 0, {template: templateSheet});
  }
  //エラー処理//
  catch(e){}
}
// tempのシート名を決める
function getName(){
  //今日の日時を取得
  var today = new Date(); 
  //7日後を取得して整形
  today.setDate(today.getDate() + 7);
  var seven_days_later = Utilities.formatDate(today, 'JST', 'MM/dd');
  Logger.log(seven_days_later);
  return ("~" + seven_days_later);
}
ss.insertSheet(getName(), 0, {template: templateSheet});
ss=アクティブなスプレッドシートにシートを挿入
()内で順に「挿入するシート名」「どの場所に挿入するか(0が先頭)」「どのシートをコピー元とするか( 書き方は{template:コピー元のシート})」を指定しています

トリガーを設定する

最後のトリガーを設定します。メニューの時計マークからトリガー設定画面に遷移します。

最後に以下のように週ベースで、翌週分のシートを作りたい曜日を選択しておしまいです。

まとめ

いかがでしたか。めちゃくちゃ簡単でしたね!

こういう小さな手間を1つ1つ削減していって、より生産的な・ビジネス成果に対するインパクトの多い仕事に集中していきましょう。

なお、本来であれば、効率化する手間>効率化して得られるメリットであればやらない方がいいですが、最初はむしろなんでもやってみるくらいの精神で1つ1つ効率化してみることで、効率化・業務改善のスキル向上に繋がるのでぜひ試してみてください◎