CalendarApp.getCalendarByIdと自動メール送信:会議リマインダー自動化で業務効率化
本記事では、Google Apps Script (GAS) の CalendarApp.getCalendarById
関数を用いて、特定のカレンダーから会議情報を取得し、自動でリマインダーメールを送信する方法を解説します。会議リマインダーの自動化は、予定忘れを防ぎ、会議の準備を促すことで、業務効率化に大きく貢献します。特に、参加者が多い会議や、複数の会議が連続する場合には、リマインダーの自動化は非常に有効です。
CalendarApp.getCalendarByIdとは?
CalendarApp.getCalendarById(calendarId)
は、指定されたIDを持つカレンダーを取得するためのGAS関数です。calendarId
には、取得したいカレンダーのIDを指定します。カレンダーIDは、Googleカレンダーの設定画面から確認できます。
カレンダーIDの確認方法
- Googleカレンダーを開きます。
- 設定メニュー(歯車アイコン)をクリックし、「設定」を選択します。
- 左側のメニューから、カレンダーを選択します。
- カレンダーの設定画面で、「カレンダーID」を確認します。
会議リマインダー自動送信の実装
ここでは、CalendarApp.getCalendarById
を使用して、会議リマインダーを自動送信する具体的な方法を説明します。以下の手順で実装します。
- カレンダーから会議情報を取得
- リマインダーメールを送信する対象の会議を抽出
- メールを作成し送信
実装例1:指定時間前にリマインダーメールを送信する
この例では、会議開始時間の1時間前にリマインダーメールを送信します。
function sendMeetingReminders() {
// カレンダーIDを設定
const calendarId = "your_calendar_id@group.calendar.google.com";
// リマインダーを送信する時間(分)を設定
const reminderTimeBefore = 60;
// 現在の日時を取得
const now = new Date();
// リマインダー送信対象期間(ここでは翌日まで)
const endDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendarId);
// 指定期間のイベントを取得
const events = calendar.getEvents(now, endDate);
// 各イベントについて処理
for (const event of events) {
// イベントの開始時間を取得
const startTime = event.getStartTime();
// リマインダー送信時間
const reminderTime = new Date(startTime.getTime() - reminderTimeBefore * 60 * 1000);
// まだリマインダーを送信していないか確認(スプレッドシート等で送信済みフラグを管理することを推奨)
// ここでは簡易的にイベントの説明に「送信済み」と含まれていないかで判断
if (now < reminderTime && event.getDescription().indexOf("送信済み") === -1) {
// 参加者のメールアドレスを取得
const guests = event.getGuestList();
let guestEmails = [];
for (const guest of guests) {
guestEmails.push(guest.getEmail());
}
// 件名と本文を作成
const subject = "【リマインダー】" + event.getTitle();
const body = event.getTitle() + " の会議が " + startTime + " から開始されます。
" + "場所:" + event.getLocation() + "
" + "詳細:" + event.getDescription();
// メールを送信
MailApp.sendEmail({
to: guestEmails.join(","),
subject: subject,
body: body
});
// イベントの説明に「送信済み」を追記(スプレッドシート等で送信済みフラグを管理することを推奨)
event.setDescription(event.getDescription() + "\n送信済み");
}
}
}
実装例2:特定のキーワードを含む会議のみリマインダーを送信
会議のタイトルに特定のキーワード(例:[重要])が含まれる場合のみ、リマインダーメールを送信する例です。
function sendMeetingRemindersWithKeyword() {
// カレンダーIDを設定
const calendarId = "your_calendar_id@group.calendar.google.com";
// リマインダーを送信する時間(分)を設定
const reminderTimeBefore = 30;
// 検索キーワードを設定
const keyword = "[重要]";
// 現在の日時を取得
const now = new Date();
// リマインダー送信対象期間(ここでは当日のみ)
const endDate = new Date(now.getTime() + 24 * 60 * 60 * 1000);
// カレンダーを取得
const calendar = CalendarApp.getCalendarById(calendarId);
// 指定期間のイベントを取得
const events = calendar.getEvents(now, endDate, {search: keyword});
// 各イベントについて処理
for (const event of events) {
// イベントの開始時間を取得
const startTime = event.getStartTime();
// リマインダー送信時間
const reminderTime = new Date(startTime.getTime() - reminderTimeBefore * 60 * 1000);
// まだリマインダーを送信していないか確認
if (now < reminderTime && event.getDescription().indexOf("送信済み") === -1) {
// 参加者のメールアドレスを取得
const guests = event.getGuestList();
let guestEmails = [];
for (const guest of guests) {
guestEmails.push(guest.getEmail());
}
// 件名と本文を作成
const subject = "【重要会議リマインダー】" + event.getTitle();
const body = event.getTitle() + " の会議が " + startTime + " から開始されます。
" + "場所:" + event.getLocation() + "
" + "詳細:" + event.getDescription();
// メールを送信
MailApp.sendEmail({
to: guestEmails.join(","),
subject: subject,
body: body
});
// イベントの説明に「送信済み」を追記
event.setDescription(event.getDescription() + "\n送信済み");
}
}
}
よくある問題とトラブルシューティング
- カレンダーIDが間違っている: カレンダーIDを再度確認してください。
- 権限エラー: GASプロジェクトがカレンダーAPIへのアクセス許可を持っているか確認してください。
- タイムゾーンの問題: GASのタイムゾーンが正しく設定されているか確認してください。
- メールが送信されない: スパムフィルタに引っかかっていないか確認してください。また、MailApp.sendEmailの実行回数制限に達していないか確認してください。
カスタマイズ方法と応用例
- リマインダーメールのカスタマイズ: メール本文に会議資料へのリンクや、会議の目的などを追加できます。
- リマインダー送信タイミングの調整: 会議の種類や重要度に応じて、リマインダーを送信するタイミングを調整できます。
- スプレッドシートとの連携: スプレッドシートに会議情報を記録し、リマインダーの送信状況を管理できます。
まとめ
CalendarApp.getCalendarById
を活用することで、会議リマインダーの自動送信を簡単に実装できます。本記事で紹介したコード例を参考に、ぜひ会議リマインダーの自動化を試してみてください。業務効率化に大きく貢献できるはずです。
PR
CodeCampは、現役エンジニアからマンツーマンで学べるオンラインプログラミングスクールです。WebデザインやWebサービス開発、転職支援など、目的に合わせた多様なコースが選べます。
朝7時〜夜23時40分まで、365日レッスンが受けられるため、忙しい方でも自分のペースで学習を進めることが可能です。通過率8%の厳しい選考を通過した質の高い講師陣が、あなたのキャリアチェンジを強力にサポートします。
さらに、未経験者向けのカリキュラムや、学習開始から20日以内の全額返金保証制度もあるため、プログラミング学習に不安を感じている方でも安心して始めることができます。
CodeCampで理想の働き方を実現しよう