毎月同じフォーマットのシートを手動で複製していると、作業が煩雑になりミスも発生しやすくなります。GoogleスプレッドシートにはApps Scriptという自動化機能が備わっており、テンプレートシートから月次シートを自動生成できます。この記事では、Apps Scriptを使ってシートを複製し、日付に基づいた名前で新しいシートを作成する方法を解説します。スクリプトの書き方からトリガー設定まで、初心者でもわかりやすく説明しますので、ぜひご活用ください。
【要点】Apps Scriptで月次シートを自動生成する3ステップ
- テンプレートシートの準備: 複製元となるフォーマット済みのシートを1つ作成し、名前を「テンプレート」など固定名にしておきます。
- スクリプトの記述: シートを複製し、現在の年月をシート名に付ける関数を書きます。日付の取得には Utilities.formatDate を使用します。
- 時間主導型トリガーの設定: 毎月1日などに自動実行するトリガーを設定すると、完全自動化が実現します。
ADVERTISEMENT
目次
月次シート自動生成の準備とスクリプトの基本構成
まず、テンプレートとなるシートを用意します。作成したいフォーマット(見出しや関数、書式など)をすべて設定したシートを1枚作り、そのシート名を「テンプレート」に変更しておきましょう。この名前はスクリプト内で複製元として指定するため、間違いのない名前にします。次に、スクリプトエディタを開きます。メニューから「拡張機能」→「Apps Script」を選択すると、別タブでエディタが起動します。
スクリプトは以下のような構造になります。関数名は任意ですが、ここでは createMonthlySheet とします。この関数内で、アクティブなスプレッドシートを取得し、テンプレートシートを複製して、新しいシート名を「2025年4月」のような形式に設定します。日付の取得には new Date() で現在日時を取得し、Utilities.formatDate() で指定した書式に変換します。
Apps Scriptでシートを複製して名前を付ける手順
実際のコードを記述しながら、手順を追って説明します。以下のスクリプトをエディタにコピーして貼り付けてください。
function createMonthlySheet() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var template = ss.getSheetByName('テンプレート');
if (!template) {
SpreadsheetApp.getUi().alert('テンプレートシートが見つかりません。');
return;
}
var now = new Date();
var year = now.getFullYear();
var month = now.getMonth() + 1; // getMonth()は0始まりなので+1
var sheetName = year + '年' + month + '月';
// 同名シートが存在する場合はスキップ
if (ss.getSheetByName(sheetName)) {
return;
}
var newSheet = template.copyTo(ss);
newSheet.setName(sheetName);
// 必要に応じて新しいシートをアクティブにするなど
ss.setActiveSheet(newSheet);
}
- スプレッドシートとテンプレートシートの取得
SpreadsheetApp.getActiveSpreadsheet()で現在のスプレッドシートを取得し、getSheetByName('テンプレート')でテンプレートシートを取得します。テンプレートが見つからない場合はエラーメッセージを表示して終了します。 - 新しいシート名の生成
new Date()で現在日時を取得し、年と月を取り出します。月は0から始まるため、+1して正しい月にします。そして「2025年4月」のような文字列を作成します。 - 同名シートの重複チェック
既に同じ名前のシートが存在する場合、スクリプトが何度も実行されて重複するのを防ぐために、getSheetByNameで存在確認をし、あれば何もせずに終了します。 - シートの複製と名前変更
template.copyTo(ss)でテンプレートをスプレッドシート内にコピーします。コピーされたシートの名前は自動的に「テンプレートのコピー」などになるため、setName(sheetName)で目的の名前に変更します。 - オプション: シートをアクティブにする
ss.setActiveSheet(newSheet)で作成したシートをアクティブにすると、ユーザーがすぐに作業を始められます。必要に応じて追加してください。
時間主導型トリガーで毎月自動実行する設定手順
スクリプトが完成したら、自動化のためにトリガーを設定します。Apps Scriptエディタの左側メニューから「トリガー」(時計アイコン)をクリックします。「トリガーを追加」ボタンを押し、以下のように設定します。
- 実行する関数を選択
先ほど作成したcreateMonthlySheetを選択します。 - イベントのソースを「時間主導型」に
「時間主導型」を選びます。 - 時間ベースのトリガーのタイプを選択
「月タイマー」を選びます。これで毎月指定した日に実行できます。 - 月のうち何日目に実行するか
「1日」などを選択します。月初にシートを作成したい場合は1日が適切です。なお、1日が休日の場合はその前後になることもありますが、基本的には指定日に実行されます。 - 時刻を選択
例えば「午前9時〜10時」など、実行したい時間帯を選びます。深夜や早朝を選ぶと、日中に気づかないうちにシートが生成されます。 - 通知設定と保存
エラー時の通知メールを受け取るかどうかを設定し、「保存」をクリックします。初回は承認が必要な場合があります。
これで、毎月1日に自動的にシートが複製され、新しい月のシートが生成されるようになります。初回実行時には権限の承認画面が表示されますので、内容を確認して許可してください。
ADVERTISEMENT
注意点とよくあるトラブル
テンプレートシートの名前を間違えるとエラーになる
getSheetByName で指定するシート名が実際のシート名と完全に一致しないと、スクリプトがエラーになります。シート名の前後に余分なスペースがないか確認してください。また、テンプレートシートを削除してしまわないように注意します。
同じ月に複数回実行されるとシート名が重複する
先ほどのコードでは、同名シートが存在する場合は何もしないようにしています。しかし、トリガーが誤って複数設定されたり、手動で実行した場合には重複を防げます。万が一、同じ月のシートを再度作りたい場合は、シート名を「2025年4月_2」などに変更するロジックを追加してもよいでしょう。
スクリプトの実行に失敗したときの対処
トリガーの実行が失敗すると、Apps Scriptのエディタの「実行数」タブにエラーログが表示されます。よくある原因は、スプレッドシートの権限の問題や、テンプレートシートの不存在です。ログを確認して修正してください。また、トリガーの設定画面から「実行ログ」も確認できます。
スクリプトの実行時間制限に注意
Google Apps Scriptには1回の実行あたりの最大実行時間があります(コンシューマーアカウントで6分、Google Workspaceアカウントで30分)。シートの複製自体は一瞬で終わるため問題になりませんが、大量のデータ処理を同時に行う場合は注意が必要です。
まとめ
この記事では、Apps Scriptを使ってテンプレートシートを複製し、月次シートを自動生成する方法をご紹介しました。わずか数行のスクリプトで、毎月のシート作成作業を完全に自動化できます。特に、copyToメソッドとUtilities.formatDateの組み合わせがポイントです。さらに応用として、シート名に「2025年4月_売上」のように複数の情報を含めたり、複数のテンプレートを用意して週次や四半期ごとに生成することも可能です。ぜひ、ご自身の業務に合わせてカスタマイズしてみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
