@sustny note

忘れっぽさを補うためのメモ

開催するイベントを自動でリマインドするやつ

を作った。

※【追記】2017/06/10 0:05 - ちょっと書き足しました

仕組み

  • Googleスプレッドシートにイベントを書いていく
  • Google Apps Scriptで今日or明日のイベントを探させる
  • 今日のイベントだったら8時、明日だったら20時にリマインドをLINEに送る

コードはGitHubに置いた。

スプレッドシート自体もそのうちどこかで公開するかも。

ぶっちゃけもっと便利でクレバーな通知方法はあふれてると思ってしまってつらい。

スプレッドシート

f:id:sustny:20170609180945j:plain

用意したのはこんな感じのスプレッドシート。用意したというか元から使ってたので、今回のために新たに用意したわけではない。

背景として、毎月集まる友人ら8人と飲み会だの旅行だのやっているので、元々は出欠を明瞭にするためにスプレッドシートを作成していた。

その後、Google Apps Script(以下"GAS")を使用しLINEへ投稿ができることを知り、予定を投げるスクリプトを書いてみようとなったのが今回の始まり。

日付とか場所とかを書いていき、参加者に◯、未定の人に△、不参加なら×を書いていく感じで使っている。

イベントが終わると自動でグレーアウトする(ただの条件付き書式→"=(開催日)<TODAY()“)。

GAS側の処理

  1. 直近で一番近い、もしくは当日の予定を探る
  2. 探ったイベントの日付を確認し、今日なら午前中、明日なら夜に投稿されるよう次の関数に投げる
  3. 概要(イベント名、場所、集合時間、集合場所)を配列へ格納する(空白だったら"(未定)“を格納する)
  4. 参加者一覧(シート右側の欄で"◯"がついている者)を探索し、対応するものの名前を用意した変数へ格納する
  5. 概要と参加者一覧をLINEで通知する関数に投げ、投稿させる
  6. 上記2から5をあと4回繰り返す(下の行にイベントがなければ何も起きない)

LINE側への通知

f:id:sustny:20170609181600j:plain

こんな感じで通知される。


[テスト]
■□(本日|明日)のイベント情報□■
【(イベント名)】
(開催場所)
【集合】
[H:mm]
[集合場所]
【参加者】
(ex.)和泉、山田、千寿、獅童


スクリプト自体はAM8-9時とPM20-21時の2回動いてくれるようにGASのタスクスケジューラ的なやつで登録済み。

スクリプト内で現在時刻が12時より前だったら当日の予定、12時より後だったら翌日の予定を出力するように分岐させてるのでこれで運用上は問題ないはず。

何度もテストはしたけど、ひとまず実際の予定通り動き始めるのが6/16の20時以降なので問題あれば改善する必要あり。

以上。