GASで自動化!メールでカレンダー通知を受け取る方法


GASでカレンダー通知をメールで受け取る基本
まずは、GASを使ってGoogleカレンダーを操作するために準備を整える必要がある。
1. GASプロジェクトの作成
まずはGASプロジェクトを新規に作成する。
1. Googleドライブを開き、「+新規」から「Google Apps Script」を選ぶ。
2. プロジェクト名を設定しよう。ここでは「カレンダー通知メーラー」とする。
2. 必要なAPIにアクセスする
GASでカレンダーやメールを操作するためには、適切なサービスを使用する必要がある。
1. GASエディタの「サービスを追加」から「Calendar API」と「Gmail API」を有効にしよう。
3. スクリプトを書こう
GASで必要なスクリプトを記述する。
function sendCalendarNotifications() {
var calendarId = 'primary'; // ここにカレンダーのIDを入れる
var now = new Date();
var later = new Date(now.getTime() + 3600000); // 一時間後
var events = CalendarApp.getCalendarById(calendarId).getEvents(now, later);
if (events.length > 0) {
events.forEach(function(event) {
var subject = 'カレンダー通知: ' + event.getTitle();
var body = 'イベントは次の時間に設定されています: ' + event.getStartTime();
GmailApp.sendEmail('you@example.com', subject, body);
});
}
}
CalendarApp.getCalendarById(calendarId): 指定したIDのカレンダーオブジェクトを取得する。
getEvents(now, later): 現在時刻から一時間後までのイベントを取得する。
GmailApp.sendEmail(): メールを送信するためのメソッドさ。
GASスクリプトの実行設定
スクリプトを実際に動作させるための設定が必要になる。
トリガーの設定
GASでは、トリガーを使って定期的にスクリプトを実行できるように設定可能だ。
1. GASエディタの「時計」のアイコンをクリックし、トリガーを設定。
2. どの関数をどの間隔で動かすかをセットしよう。ここでは、1時間おきに「sendCalendarNotifications」を実行することにする。
練習問題
GASを使って、指定したカレンダーの明日の予定を全て確認し、メールで通知を送るスクリプトを書いてみよう。
解答・解説
function sendTomorrowEvents() {
var calendarId = 'primary'; // ここにカレンダーのIDを入れる
var tomorrow = new Date();
tomorrow.setDate(tomorrow.getDate() + 1);
var startOfTomorrow = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 0, 0, 0);
var endOfTomorrow = new Date(tomorrow.getFullYear(), tomorrow.getMonth(), tomorrow.getDate(), 23, 59, 59);
var events = CalendarApp.getCalendarById(calendarId).getEvents(startOfTomorrow, endOfTomorrow);
if (events.length > 0) {
events.forEach(function(event) {
var subject = '明日のカレンダー通知: ' + event.getTitle();
var body = 'イベントは次の時間に設定されています: ' + event.getStartTime();
GmailApp.sendEmail('you@example.com', subject, body);
});
}
}
setDate(tomorrow.getDate() + 1): 今日の日付を一日進めて、明日の日時をセットしている。
getEvents(startOfTomorrow, endOfTomorrow): 明日の一日を指定して、その中にあるイベントを取得している。
このスクリプトは、指定したカレンダーの明日の全ての予定をメールで通知する。トリガーを使用すれば、毎日特定の時刻に確認を実行できるのだ。VEVENTアクションを設定することで、毎日指定した時刻に確認を実行するようにするのが良いだろう。