📅

【GAS】Googleカレンダーの「予定」を検索・変更・移動して自動整理する方法

2025/02/15に公開

はじめに

Googleカレンダーを使っていると、予定の整理や名前の統一をしたくなることはありませんか?
しかし、手動で編集するのはとても大変です。

そこで、Google Apps Script(GAS)を活用して、特定の予定を検索・変更・移動するスクリプトを作成し、Googleカレンダーの整理を自動化しました。本記事では、GASを使ってカレンダーの予定を効率的に管理する方法を解説します。

本記事の対象者

本記事は、以下の処理を行いたい方向けです。

  • 特定の条件に合う予定を検索したい(例:[XX] から始まる予定)
  • 予定のタイトルを変更したい(例:[XX] → [YY])
  • 予定を特定のカレンダーへ移動したい (例:[予定] → [サブカレンダー])
  • 特定の期間の予定を変更したい (例:過去xxヶ月~未来xxヶ月)

GASでカレンダーの予定を取得する方法

まずは、Googleカレンダーの予定を取得する方法です。

カレンダーの一覧を取得

var calendars = CalendarApp.getAllCalendars(); // すべてのカレンダーを取得

このコードを実行すると、アカウントに紐づいたカレンダーのリストを取得できます。

過去xxヶ月~未来xxヶ月の予定を取得

GASで予定を取得する際、通常は未来の予定を取得することが多いですが、過去の予定も検索することで、カレンダーをより柔軟に整理できます。

var today = new Date();
var startDate = new Date(today.getFullYear(), today.getMonth() - 2, today.getDate()); // 過去2ヶ月前
var endDate = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate()); // 未来1ヶ月後

この startDateendDategetEvents(startDate, endDate) に渡せば、
過去xxヶ月から未来xxヶ月の範囲の予定を取得できます。


予定のタイトルを正規表現で検索&変更

GASでは match() を使って、特定のパターンに合う予定のタイトルを検索できます。

[XX] → [YY] に変更する場合

if (title.match(/^\s*\[XX\]\s*/)) {
  var newTitle = title.replace(/^\s*\[XX\]\s*/, "[YY] ");
}

ポイント

  • ^\s*\[XX\]\s* → タイトルの先頭が [XX] の予定を検索
  • replace(/^\s*\[XX\]\s*/, "[YY] ") → [XX] を [YY] に置換

予定を別のカレンダーへ移動する

GASでは createEvent() を使い、新しいカレンダーに予定をコピーできます。

カレンダーを検索 & 予定を移動するスクリプト

function updateAndMoveEventsToSports() {
  var calendars = CalendarApp.getAllCalendars();
  var targetCalendarName = "サブカレンダー"; // "サブカレンダー"を対象とする
  var today = new Date();
  var startDate = new Date(today.getFullYear(), today.getMonth() - 2, today.getDate());
  var endDate = new Date(today.getFullYear(), today.getMonth() + 1, today.getDate());
  var targetCalendar = calendars.find(calendar => calendar.getName() === targetCalendarName);
  if (!targetCalendar) {
    console.log("ターゲットカレンダー[" + targetCalendarName + "]が見つかりません。");
    return;
  }
  var count = 0;
  calendars.forEach(function(calendar) {
    if (calendar.getName() === targetCalendarName) return;
    var events = calendar.getEvents(startDate, endDate);
    events.forEach(function(event) {
      var title = event.getTitle();
      if (title.match(/^\s*\[XX\]\s*/)) {
        var newTitle = title.replace(/^\s*\[XX\]\s*/, "[YY] ");
        targetCalendar.createEvent(newTitle, event.getStartTime(), event.getEndTime(), {
          location: event.getLocation(),
          description: event.getDescription()
        });
        event.deleteEvent();
        console.log("移動: " + calendar.getName() + " → " + targetCalendarName + " | " + title + " → " + newTitle);
        count++;
      }
    });
  });
  console.log("移動・変更した予定の合計: " + count);
}

おわりに

GASを活用すれば、Googleカレンダーの整理が圧倒的に楽になります。

「予定のフォーマット変更」や「特定のカレンダーへの移動」など、手作業だと時間がかかる処理を自動化することで、より効率的にカレンダーを管理できます。

カレンダー管理がスムーズになり、日々の生産性が向上したと感じていただけたら幸いです。


株式会社ONE WEDGE

【Serverlessで世の中をもっと楽しく】
ONE WEDGEはServerlessシステム開発を中核技術としてWeb系システム開発、AWS/GCPを利用した業務システム・サービス開発、PWAを用いたモバイル開発、Alexaスキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
https://onewedge.co.jp/

GitHubで編集を提案

Discussion