【GAS】Googleカレンダーの「予定」を検索・変更・移動して自動整理する方法
はじめに
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ヶ月後
この startDate
と endDate
を getEvents(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スキル開発など、元気と技術力を武器にお客様に真摯に向き合う価値創造企業です。
Discussion