iPhoneから登録した終日予定にアラームを設定する方法

2014-04-30


iPhoneの標準カレンダーって便利ですよね。個人的には先日のアップデートで追加されたリスト表示機能が費用にお気に入りです。これをGoogleカレンダーと同期させておけばいつでもどこでも最新のカレンダーが確認できるというすぐれものです。

ですが、このiPhone+Googleカレンダーの組み合わせで一つ困ったことが。iPhoneで終日イベントを新規登録した場合、なんとアラームがセットされないんです。終日イベントのアラームの仕様が異なることが原因と見てます(iPhoneでは当日の9時といった特殊なアラームになっています)。

これに気づかずいくつか実施し忘れた予定があって大変困っておりました。

そこでこれをGoogle Apps Scriptで解決したいと思います。
サンプルは以下です。このサンプルでは、昨日・今日・明日にアラームが設定されていない予定があれば、15分前のアラームを設定しています。

function setAlerm() {
  // ここにカレンダーのIDを登録:IDはカレンダーの設定で確認できます。
  var c = CalendarApp.getCalendarById("cranpun@gmail.com");
  
  var e, day, es, time;
  var body  = "";
  for(var d = 0; d < 3; d++) {
    day = new Date();
    time = day.getTime();
    time += 86400000 * (d - 1); // 日付の計算。1day = 86,400,000ミリ秒
    day.setTime(time);
    es = c.getEventsForDay(day);
    for(var i = 0; i < es.length ; i++) {
      if(es[i].getPopupReminders().length <= 0) {
        es[i].addPopupReminder(15);
      }
    }
  }
}

Google カレンダーでは通常のアラームをPopupRemiderという名前で呼んでいるようです。
このスクリプトを、例えば毎日夜に実行すれば明日の予定に全てアラームが付きますので実施のし忘れを防止することにつながります。

なお、このサンプル、繰り返しの予定には対応していません。Google カレンダーでは通常の予定と繰り返しの予定は扱いが違うらしく、一括で取得できない模様です。まぁ、繰り返しの予定は最初にアラーム付ければ全ての予定にアラームが付きますのであまりスクリプトは必要ないと思いますが (^^;