導入

Googleカレンダーで「毎週のルーティン」を設定するのは簡単ですが、「第○回」や「累計:○件」のように、回数を自動でカウントアップさせたいと思ったことはありませんか?

残念ながら、Googleカレンダーの標準機能(繰り返し設定)では、すべてのタイトルが同一になってしまい、数字を1つずつ増やすことはできません。手動で書き換えるのも、1年分となると気が遠くなる作業です。

そこで今回は、Google Apps Script(GAS)を使って、指定した期間に「累計:1、累計:2…」と連番を振りながら予定を一括登録するスクリプトをご紹介します。

実現したいこと

  • 特定の曜日(例:火曜日と金曜日)に予定を入れる
  • タイトルに【累計:〇〇】というカウントを入れる
  • 1年以上の長期予定を一括で作成する
  • カレンダーの色も指定(今回は「ブルーベリー」色)

GAS(Google Apps Script)のコード

以下のスクリプトは、大量作成時のエラー(レートリミット)を回避するために、1秒の待機時間を挟む安全設計にしています。

/**
 * Googleカレンダーに連番付きの予定を一括登録するスクリプト
 */
function createNumberedEvents() {
  const calendar = CalendarApp.getDefaultCalendar();
  
  // ================= 設定項目 =================
  const CONFIG = {
    startDate: new Date('2026-05-12T21:00:00'), // 開始日
    endDate:   new Date('2027-12-31T23:59:59'), // 終了日
    startCount: 4,                             // 初回の累計番号
    postPerDay: 1,                             // 1回あたりの投稿数
    titleSuffix: "】動画投稿日",                 // タイトルの後半部分
    color: CalendarApp.EventColor.PALE_BLUE,   // ブルーベリー色
    sleepTime: 1000                            // 1件ごとの待機時間(ミリ秒)
  };
  // ===========================================

  let processDate = new Date(CONFIG.startDate.getTime());
  let cumulativeCount = CONFIG.startCount;

  while (processDate <= CONFIG.endDate) {
    const dayOfWeek = processDate.getDay(); 
    
    // 火曜日(2)または金曜日(5)の場合のみ実行
    if (dayOfWeek === 2 || dayOfWeek === 5) {
      const eventStart = new Date(processDate.getTime());
      const eventEnd   = new Date(processDate.getTime() + (2 * 60 * 60 * 1000)); 
      
      const title = "【投稿: " + CONFIG.postPerDay + ", 累計: " + cumulativeCount + CONFIG.titleSuffix;
      
      try {
        const event = calendar.createEvent(title, eventStart, eventEnd);
        event.setColor(CONFIG.color); 
        console.log("作成成功: " + title);
        
        cumulativeCount++;
        Utilities.sleep(CONFIG.sleepTime); // API制限回避

      } catch (e) {
        console.error("エラー中断: " + e.message);
        return;
      }
    }
    processDate.setDate(processDate.getDate() + 1);
  }
}

こだわりポイント

1. API制限(レートリミット)の回避

Googleカレンダーは短時間に数百件の予定を作成しようとすると、「短時間に作りすぎです」というエラーを吐いて停止してしまいます。 Utilities.sleep(1000) を入れることで、1件ごとに1秒の休憩を挟み、Google先生に怪しまれないように「安全運転」で登録を進めます。

2. getDay() による曜日判定

カレンダーの「繰り返し機能」を使わず、プログラム側で「今日が火曜日か金曜日か」を1日ずつ判定しています。これにより、タイトルの中身を柔軟に変更しながら、決まった曜日だけに予定を差し込むことができます。

3. カラー指定で視認性をアップ

スクリプトから予定を作成する場合、色(Color ID)も指定可能です。今回は「ブルーベリー(Pale Blue)」を指定し、他の予定と区別しやすくしています。

使い方

  1. Google Apps Scriptを開く
  2. 新しいプロジェクトを作成し、上記のコードを貼り付ける
  3. CONFIG 内の開始日や累計数を自分に合わせて書き換える
  4. 「実行」ボタンを押す(初回のみ権限の承認が必要です)

まとめ

1年半分以上の予定を一括で、しかも連番付きで作成できるのは自動化ならではのメリットです。動画投稿のスケジュール管理や、資格試験までのカウントダウンなど、応用範囲は広いのでぜひ試してみてください。


この記事が気に入ったら『目黒で働く分析担当の作業メモ』ご支援をお願いします!

※OFUSEに飛びます


おすすめの記事