予定開始の通知はできても,終了を通知する設定はGoogle カレンダーだけでは無理なようなので,GAS (Google Apps Script)を使って設定します.
やること
- Google Apps Scriptを使用して
- Googel カレンダーの予定から,特定の文字列を説明に追加してある予定だけ
- 予定終了をメール通知する
Google Apps Scriptを作成する
Google Apps Scriptは最初から追加されているかもしれません.
もしも無ければ,インストールはこちらの2-1をご覧ください.
Google Apps Scriptの新規プロジェクトを作る
Google ドライブの新規ボタン→その他→Google Apps Script
“無題のプロジェクト”が作成されます.
プロジェクト名は好きな名前をつけてください.
ソースコードの編集
デフォルトで入力されているコードを削除して,以下のコードをコピペしてください.
ここでは,予定終了時刻の5分前と終了時刻ちょうどにメール通知が来るように設定してあります.
また,自分がオーナー作成者である予定のみに作動するようになっています.
注意
トリガーが発動してからメールを受信するまでに,タイムラグが生じます.
/*
GoogleCalendar reminder
*/
function Reminder()
{
var calendars = CalendarApp.getAllCalendars();
var text;
var n_1 = 1;
var n_5 = 5;
var n_6 = 6;
var n1MinutesBefore;
var n5MinutesBefore;
var n6MinutesBefore;
for(i in calendars)
{
var calendar = calendars[i];
var date = new Date();
var events = calendar.getEventsForDay(date);
for(j in events)
{
var event = events[j];
var ownEvent = event.isOwnedByMe();
var title = event.getTitle();
var description = event.getDescription();
endTime = event.getEndTime();
n1MinutesBefore = (endTime.getTime() - n_1*60*1000);
n4MinutesBefore = (endTime.getTime() - n_5*60*1000);
n5MinutesBefore = (endTime.getTime() - n_6*60*1000);
if(ownEvent)
{
if(description.indexOf("[remind me]") != -1)
{
text = title + "\n" + "[" + calendar.getName() + "]";
if(n1MinutesBefore < date && date < endTime)
{
sendmail_1(text);
}
if(n6MinutesBefore < date && date < n5MinutesBefore)
{
sendmail_5(text);
}
}
}
}
}
}
function toTime(str)
{
return Utilities.formatDate(str, 'JST', 'HH:mm');
}
function sendmail_1(body)
{
var body = body;
MailApp.sendEmail(
{
to: "xxxx@xxxx.com",
subject:"終了時刻",
body: body,
});
}
function sendmail_5(body)
{
var body = body;
MailApp.sendEmail(
{
to: "xxxx@xxxx.com",
subject:"終了5分前",
body: body,
});
}
メールの宛先
関数function sendmail_1とfunction sendmail_5の,メールの宛先xxxx@xxxx.comを書き換えてください.
to: “xxxx@xxxx.com”,
xxxx@xxxx.comの部分を,通知を受信したいメールアドレスに変更してください.(2箇所)
メールの件名と本文
メールの件名を変更したい場合は,subjectを書き換えます.
subject:”終了時刻”,
subject:”終了5分前”,
この2箇所を,任意の文字列に変更してください.
受け取るメール通知の本文は,以下のようになっています.
予定のタイトル
[ カレンダー名 ]
設定しているのは,
text = title + “\n” + “[” + calendar.getName() + “]”;
の部分です.
ここまできたら保存しましょう.
トリガーの設定
自動で実行されるように設定をします.
編集→現在のプロジェクトのトリガー
画面遷移をした後に,“トリガーの追加”からトリガーを設定します.
以下の画像のように設定してください.
リクエストの許可
デバッグをして,無事に実行できるか確認します.
その際に,警告といくつか許可することを求められます.
- Google カレンダー:カレンダーから予定を取得するために使用します.
- ユーザー本人に代わってのメールの送信:メール通知を送信するのに使用します.
実行→関数をデバッグ→“Reminder”を選択
すると,許可を確認することを求められます.
Googleアカウントを選択し,
詳細をクリック,
“プロジェクト名”(安全ではないページ)に移動,
下へスクロールして,許可をクリックします.
エラーが出なければ成功です.
以上で設定は終了です.
コメント