楽天ポイント4倍セール!セール会場へ

Googleスプレッドシート│自動で日付入り!複製シートを作成する方法

masterシートから月ごとのシートを複製します。

年月はスプレッドシートのタイムゾーンで決め、同じ年月名のシートがあれば上書きせずに終了します。

練習コード・入力JSON・文字変換ブックをダウンロード(ZIP)できます。

この練習では、ZIP内のarticle-218.jsか、以下に掲載したコードを使います。

記事ごとに別のApps Scriptプロジェクトを使い、新規の練習ブックを対象にしてください。

以下は2026年10月2日のローカル模擬検証の記録です。

共通のGASサンプル全体では51項目をローカルの模擬環境で確認しています。

2026年10月28日には、本文と配布コードの一致を確認し、複製処理に関する6項目の模擬試験を再実行しました。

初回と再実行、月の境界、不正日時、複製元なし、ロック失敗、複製失敗が対象です。

Googleへの認可と実際のシートの複製・値・書式・数式参照は未検証です。

目次

入力例:masterと練習ブックの設定

新規ブックにmasterというシートを作り、A1に「項目」、B1に「値」、A2に「練習」、B2に数値10を入れます。

必要な書式もmasterに指定します。

ブックの「ファイル」→「設定」でタイムゾーンを確認し、日本時間で使うなら東京にそろえます。

設定内容
SPREADSHEET_ID練習ブックのID
複製元のシート名master
デモの日時2026年10月1日0時30分、日本時間
日本時間の生成名202610
スポンサーリンク

手動実行と同じ年月での再実行

「拡張機能」→「Apps Script」を開き、プロジェクトの設定でSPREADSHEET_IDをスクリプトプロパティへ入れます。

次のコードを保存し、最初はdemoMonthCopyを実行します。

現在日時で複製する場合はAutoSheetCopyを実行します。

demoMonthCopyは実行日によらず、2026年10月1日0時30分(日本時間)を使います。

初回は対象ブックへのアクセス権限を確認して認可します。

function monthSheetName_(date, zone) {
  if (!(date instanceof Date) || !Number.isFinite(date.getTime())) throw new Error('有効な日時を指定してください');
  return Utilities.formatDate(date, zone, 'yyyyMM');
}
function AutoSheetCopy() { return copyMonthAt_(new Date()); }
function demoMonthCopy() { return copyMonthAt_(new Date('2026-10-01T00:30:00+09:00')); }
function copyMonthAt_(date) {
  const id = PropertiesService.getScriptProperties().getProperty('SPREADSHEET_ID');
  if (!id) throw new Error('SPREADSHEET_IDを設定してください');
  const ss = SpreadsheetApp.openById(id);
  const name = monthSheetName_(date, ss.getSpreadsheetTimeZone());
  const lock = LockService.getScriptLock();
  if (!lock.tryLock(5000)) throw new Error('別の実行中です。完了後に同じ年月で確認してください');
  try {
    const master = ss.getSheetByName('master');
    if (!master) throw new Error('masterシートがありません');
    if (ss.getSheetByName(name)) return {status: 'exists', sheetName: name};
    ss.insertSheet(name, 0, {template: master});
    SpreadsheetApp.flush();
    const result = {status: 'created', sheetName: name};
    console.log(JSON.stringify(result));
    return result;
  } finally { lock.releaseLock(); }
}

確認結果と切り分け

条件結果
日本時間の初回デモ202610が追加され、status:created
同じデモを再実行status:exists。新しいシートを増やさない
masterがないエラーで停止し、複製しない
既存の202610に入力済みデータがある上書きしない
masterのA2とB2複製後も元は「練習」と10のまま
月が想定と違うスプレッドシートのタイムゾーンと実行日時を確認する
別の実行が進行中ロック取得に失敗した実行は停止する

模擬検証では、同じデモ日時をロサンゼルスのタイムゾーンで判定すると202609になりました。

初回はブックの先頭に202610ができ、実行ログにcreatedが出るか確認します。

再実行時のexistsは戻り値だけで、掲載コードはログに出しません。

ブックでシート数と既存の202610の内容が変わらないことを確認してください。

タイムゾーンはシート名の月を決める条件です。

複製後の値・書式・数式参照は、実際のGoogleシートで確認する必要があります。

ロックの対象は同じプロジェクトの実行で、別プロジェクトや人の編集は対象外です。

作成後にエラーが出た場合は、年月シートが既に生成されていないか確認してください。

既存の年月シートは再実行しても修復しないため、削除せず内容を照合します。

定期実行する場合と停止方法

このコードはトリガーを自動で作成しません。

手動の複製結果を確認した後に定期実行へ移す場合は、エディタの「トリガー」からAutoSheetCopyを時間主導で指定します。

実行時間帯はプロジェクト側のタイムゾーンも確認します。

時間主導トリガーの実行時刻には幅があるため、月初の0時ちょうどに動く前提にはしません。

トリガーの動作条件はGoogleの時間主導トリガー資料を確認してください。

停止時にはエディタのトリガー一覧から該当する時間主導トリガーを削除し、生成済みのシートを確認します。

不要な複製を戻す場合も、入力後のデータを失わないよう元ブックのコピーを残してから判断します。

既存の年月シートを置き換える処理は含めていません。

公式資料

テンプレートを使うinsertSheet、ロックと反映の確定を参照してください。

関連記事・旧実装の参考資料

旧GitHubコードや外部の参考例は、現在の記事のZIPと異なる場合があります。

今回の練習は本文のセル番地・プロパティ・ZIPをそろえて実行してください。

スポンサーリンク

月別シートの複製についてよくある質問

このスクリプトは、何を自動化しますか?

masterシートから、月ごとのシートを複製します。年月はスプレッドシートのタイムゾーンで決め、同じ年月名のシートがあれば、上書きせずに終了します。

同じ月に何度も実行すると、どうなりますか?

同じデモを再実行すると、statusがexistsになり、新しいシートを増やしません。既存の年月シートに入力済みのデータがある場合も、上書きしません。

masterシートがないときは?

エラーで停止し、複製しません。複製元のシート名がmasterであることを確認してください。

シート名の月が、想定と違います。

スプレッドシートのタイムゾーンと、実行日時を確認します。模擬検証では、同じデモ日時をロサンゼルスのタイムゾーンで判定すると、202609になりました。日本時間で使うなら、ファイルの設定のタイムゾーンを東京にそろえます。

複製すると、masterの内容は変わりますか?

このコードにはmasterへ書き込む処理はありません。模擬検証ではA2とB2は元の練習と10のままでした。実シート上での複製内容は別途確認してください。

別の実行が同時に進んでいたら?

ロック取得に失敗した実行は停止します。ただし、getScriptLockが調整するのは同じスクリプトプロジェクト内の実行です。別プロジェクトや人による同時編集は防げません。

定期実行するには、どうすればよいですか?

このコードは、トリガーを自動では作成しません。手動の複製結果を確認した後で、エディタのトリガーから、AutoSheetCopyを時間主導で指定します。実行時間帯は、プロジェクト側のタイムゾーンも確認してください。

この記事のコードは、動作確認済みですか?

共通のGASサンプル全体では51項目をローカルの模擬環境で確認しています。本記事の複製処理については、本文の確認表に範囲を示します。複製後の値・書式・数式参照は、実際のGoogleシートで確認する必要があります。Googleへの認可・実シートの操作は未検証です。まず新規の練習ブックで試してください。

次に学ぶ・作業環境を選ぶ

学習を続けたい方や、作業環境を整えたい方は、目的に合うガイドをご覧ください。

スプレッドシート・GASのおすすめ書籍

作業環境の作り方

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次