Google Apps ScriptでGoogle Calendarから今日の予定のまとめをメールにする
Google Apps Scriptを何かできないかなーと思ってたら以下の記事を見つけました。
Google Apps Script 入門 (業務で使えるサンプルを日本語で解説): 【業務で使える】今日の予定通知ツール(4)スクリプトの改良
これは便利!使える!っと思ったのですが記事のサンプルはデフォルトカレンダーのみの対応。 複数のカレンダーを使っている自分には不便。 そこですべてのカレンダーの予定をメールできるようにコードを変更しました。
function mySendEventsToday() { var cal = CalendarApp.getAllCalendars(); var mail_to = "hogehoge@gmail.com"; var today = Utilities.formatDate(new Date(), "JST", "yyyy/MM/dd"); var subject ="【今日の予定:" + today + "】"; // 終日イベントをメールのbodyに追加 var body = "◆終日イベント\n"; for (var i = 0; i < cal.length; i++) { var ev = cal[i].getEventsForDay(new Date()); // 不必要なカレンダーを省く if (cal[i].getName() == "hogehoge") { continue; } for (var j = 0; j < ev.length; j++) { // 今日の終日イベントのみを抽出する if (ev[j].isAllDayEvent() && (Utilities.formatDate(ev[j].getEndTime(), "JST", "yyyy/MM/dd") > today)) { body = body + "・"; body = body + ev[j].getTitle(); body = body + "\n"; } } } body = "\n" + body + "◆時間イベント\n"; // イベントを配列に格納 var ev = []; for (var i = 0; i < cal.length; i++) { var tmp_ev = cal[i].getEventsForDay(new Date()); for (var j = 0; j < tmp_ev.length; j++) { if (!tmp_ev[j].isAllDayEvent()) { ev[ev.length] = tmp_ev[j] } } } // イベントをソート for (i = 0; i < ev.length-1; i++) { for (j = 0; j < ev.length-1-i; j++) { if (ev[j].getStartTime() > ev[j+1].getStartTime()) { var tmp = ev[j+1]; ev[j+1] = ev[j]; ev[j] = tmp; } } } // イベントをメールのbodyに追加 for (var i = 0; i < ev.length; i++) { body = body + "・"; body = body + Utilities.formatDate(ev[i].getStartTime(), "JST", "HH:mm"); body = body + " - "; body = body + Utilities.formatDate(ev[i].getEndTime(), "JST", "HH:mm"); body = body + " "; body = body + ev[i].getTitle(); body = body + "\n"; } MailApp.sendEmail(mail_to, subject, body); }