🗓
Google カレンダーの移動イベントを自動的に非公開にする
背景
プライベート・会社で Google カレンダーを利用しています。移動には Google マップを利用しており、前後の移動時間を確保するために「Google カレンダーに追加」を多用しています。
しかしあるとき気づいたのです。「これ、自宅の住所を会社のみんなに大公開してるやん!!!」と。それ以来、Google マップでカレンダーに追加したら Google カレンダーアプリを開き、該当するイベントを選んで「非公開」にして… という一連の流れが習慣化しました。
まあ、想像に難くないと思いますが、これ地味に面倒臭いんですよね。その煩わしさから解放されるのが今回のゴールです。
手順
GAS のコードを書く
GAS エディタを開き、以下のコードを貼り付けてください。ハードコーディングされた箇所はないので、修正は必要ありません。
コード.gs
const defaultCalendar = CalendarApp.getDefaultCalendar();
// Triggered when calendar changes (create, edit, or delete).
function main() {
// Search calendar events which includes Google Maps info
// in 48 hours around now
const now = new Date();
const rangeHour = 24;
const start = new Date(now.getTime() - (rangeHour * 60 * 60 * 1000));
const end = new Date(now.getTime() + (rangeHour * 60 * 60 * 1000));
const options = {search: "https://goo.gl/maps/"};
// Array<CalendarApp.Calendar>
const movingEvents = defaultCalendar.getEvents(start, end, options);
for (const movingEvent of movingEvents) {
// If not set to PRIVATE...
if (movingEvent.getVisibility() != CalendarApp.Visibility.PRIVATE) {
Logger.log(`Found! Setting ${movingEvent.getTitle()} hidden...`);
movingEvent.setVisibility(CalendarApp.Visibility.PRIVATE);
Logger.log("Done.");
}
}
}
トリガーをセットする
次に、このスクリプトが実行されるタイミングを設定します。これが必要なのは新たなカレンダーが追加された時ですが、残念ながら GAS のトリガーはそこまで細かく設定できません。その代わり、カレンダーが変更(作成 || 編集 || 削除)された時に実行されるトリガーはセットできます。
おわりです!簡単でしたよね?念の為、Google マップを開いて移動イベントを追加してみてください。若干のタイムラグはありますが、即座に「非公開」になるはずです。
おわりに
今回解消されたのは小さな煩わしさですが、Google マップをよく使う我々にとっては大きな一歩です(?)。この手のアイデアが思いついたらまた共有します!
Discussion