GASでカレンダーの予定を自動取得してメール送信!Calendar.getEventsForDay完全ガイド

GASでカレンダーの予定を自動取得してメール送信!Calendar.getEventsForDay完全ガイド

Google Apps Script(GAS)を使って、Googleカレンダーの予定を自動で取得し、毎朝メールで通知する仕組みを作りませんか?この記事では、Calendar.getEventsForDay関数を徹底解説し、日々の業務を効率化するための具体的な方法を紹介します。会議のリマインダー、タスクの確認、イベントの共有など、様々なシーンで役立つ自動化を実現しましょう。

Calendar.getEventsForDay関数の基本

Calendar.getEventsForDay(date)は、指定された日のカレンダーイベントを取得するためのGASの関数です。この関数を使うことで、特定の日付にどのような予定が入っているかをプログラムで確認できます。

引数

  • date: イベントを取得する日付。Dateオブジェクトで指定します。

戻り値

Eventオブジェクトの配列。指定された日のすべてのイベントが含まれます。

利用シチュエーション:毎朝の予定をメールで自動通知

多くのビジネスパーソンにとって、毎朝その日の予定を確認することは重要なルーチンです。しかし、カレンダーアプリを開いて一つずつ確認するのは手間がかかります。そこで、GASを使って毎朝自動的にその日の予定をメールで送信する仕組みを構築することで、時間と労力を大幅に削減できます。

解決する課題

  • 予定の見落とし防止
  • 朝の準備時間の短縮
  • チームメンバーへの情報共有の効率化

実装例:毎朝9時に今日の予定をメール送信

以下のコードは、毎朝9時に今日の予定を取得し、メールで送信するGASのサンプルコードです。

function sendDailyCalendarSummary() {
// 今日の日付を取得
const today = new Date();

// カレンダーを取得(カレンダーIDは適宜変更)
const calendarId = "your_calendar_id@group.calendar.google.com";
const calendar = CalendarApp.getCalendarById(calendarId);

// 今日のイベントを取得
const events = calendar.getEventsForDay(today);

// イベントがない場合の処理
if (events.length === 0) {
Logger.log("本日の予定はありません");
return;
}

// イベント情報を整理
let eventDetails = "";
for (let i = 0; i < events.length; i++) {
const event = events[i];
const title = event.getTitle();
const startTime = Utilities.formatDate(event.getStartTime(), "JST", "HH:mm");
const endTime = Utilities.formatDate(event.getEndTime(), "JST", "HH:mm");
eventDetails += startTime + "-" + endTime + " " + title + "\n";
}

// メールを送信
const recipient = "your_email@example.com"; // 送信先メールアドレス
const subject = "【今日の予定】" + Utilities.formatDate(today, "JST", "yyyy/MM/dd");
const body = "今日の予定は以下の通りです:\n" + eventDetails;
MailApp.sendEmail(recipient, subject, body);
Logger.log("メールを送信しました");
}

コード解説

  • CalendarApp.getCalendarById(calendarId): 指定されたIDのカレンダーを取得します。your_calendar_id@group.calendar.google.comはご自身のカレンダーIDに置き換えてください。
  • calendar.getEventsForDay(today): 今日の日付のイベントを取得します。
  • Utilities.formatDate(): 日付オブジェクトを指定されたフォーマットに変換します。
  • MailApp.sendEmail(recipient, subject, body): メールを送信します。

GASトリガーの設定

このスクリプトを毎朝9時に実行するには、GASのトリガーを設定する必要があります。

  1. GASエディタを開き、左側のメニューから「トリガー」を選択します。
  2. 「トリガーを追加」をクリックします。
  3. 「実行する関数」でsendDailyCalendarSummaryを選択します。
  4. 「イベントソース」で「時間主導型」を選択します。
  5. 「時間ベースのトリガーのタイプを選択」で「日単位のタイマー」を選択します。
  6. 「時刻を選択」で「午前9時~午前10時」を選択します。
  7. 「保存」をクリックします。

カスタマイズ方法と応用例

  • 複数のカレンダーに対応:複数のカレンダーのイベントをまとめて取得し、メールに含めることができます。
  • イベント詳細情報の追加:イベントの説明、場所、参加者などの詳細情報をメールに含めることができます。
  • イベントのリマインダー機能:イベント開始前にリマインダーメールを送信する機能を追加できます。
  • スプレッドシートへの記録:取得したイベント情報をスプレッドシートに記録し、分析に活用できます。

よくある問題とトラブルシューティング

  • カレンダーIDが間違っている:カレンダーIDが正しいことを確認してください。
  • トリガーが設定されていない:トリガーが正しく設定されていることを確認してください。
  • メールが届かない:迷惑メールフォルダを確認してください。また、GASの権限設定が正しく行われているか確認してください。
  • タイムゾーンの問題Utilities.formatDate()でタイムゾーンを正しく設定してください。

まとめ

この記事では、GASのCalendar.getEventsForDay関数を使って、毎朝の予定をメールで自動通知する仕組みを構築する方法を紹介しました。この仕組みを導入することで、予定の見落としを防ぎ、日々の業務を効率化することができます。ぜひ、ご自身の環境に合わせてカスタマイズし、活用してみてください。