え、この予定明日じゃん。ってことは今は...
「明後日の予定を明日の予定と間違える」というなんともあほらしいことを二回もやってしまった。Googleカレンダーのアプリを週で表示していて、1列違うところを見てしまっていた。
ならばということで、テキスト情報で自分のメールに飛ばすように設定した。だいたい夜の21時くらいに送ってもらえば寝る前かつ明日の準備もできるかつ覚えてられるかなということで、21時から22時の間に毎日定期実行されるようにした。
注意!以下のコードは最後のhoge@example.comを自分の受信したいメアドに変更してください
これはコピペで使われるのが一番多いと思うので、一応注意書き。
const main = () => {
const tomorrow = new Date()
tomorrow.setDate(tomorrow.getDate() + 1)
const tomorrowEventsOnDefaultCal = CalendarApp.getDefaultCalendar().getEventsForDay(tomorrow)
const msg = tomorrowEventsOnDefaultCal.reduce((previousMsg, event) => {
const start = event.getStartTime()
const end = event.getEndTime()
const result = `${formatTime(start)} - ${formatTime(end)} ${event.getTitle()}\n`
return previousMsg + result
}, '');
GmailApp.sendEmail('hoge@example.com', '明日の予定', msg)
}
const formatTime = (date) => {
const hours = date.getHours() > 9 ? date.getHours() : '0' + date.getHours()
const minutes = date.getMinutes() > 9 ? date.getMinutes() : '0' + date.getMinutes()
const formatted = `${hours}:${minutes}`
return formatted
}
軽く機能紹介
- 時間を簡単にフォーマットした。
- フォーマットする関数にまとめときました。
- Array.prototype.reduceを使ってスマートに見せてる。
- ひっさびさにjs書いたので、もっとスマートなのがあった気がしてならない。
- 最初はforeachで書いて、あれ?と思って調べたらreduceが出てきた。
- 定期実行は何時にしてもたぶん明日の予定を表示してくれる。自分の場合は21時から22時にしたけど、別に何時でもよい。
最後に
GASってコピペで動いてほしいですよね。
もしコピペ(+メアド編集)で動かなかったら教えてください。