YKTのどっちがいいかな?

実世界連動地域貢献型すごろくゲームのアプリ開発状況を書いていきます。

バトンタッチ

nonstyleさんがブログを書きたくないというので,書くネタが決まっている私が急遽バトンタッチすることになりました。

LINE × Google Apps Script

今回も引き続きLINEとGoogle Apps Scriptのお話です。

事の発端は先週の記事に対するmmさんによるこのコメント。

f:id:labhea:20190613233914p:plain

これに対し私はIFTTTを使えば簡単にできると返答しました。

IFTTTとはif this then thatのレシピに基づいて様々なアプリケーションを連携させることができるサービスです。 ifttt.com

GoogleカレンダーとLINEはIFTTTに対応していますので(LINEWORKSは対応していない),

if [グーグルカレンダーが更新] then [LINEに通知]

といったレシピが簡単に作ることができます。

mmさんも無事できたようでめでたしめでたし。

...となるはずが

ある日の夜にこんなLINEが届きました(断りもなく晒していくスタイル)。

f:id:labhea:20190613234016p:plain

そんでもって

f:id:labhea:20190613234039p:plain

さらにさらに

f:id:labhea:20190613234100p:plain

おっと。これは関係なかったですね。

納得いくサービスがないなら作ればいいじゃない

ということで,どうしても遅延が許せないということなので,遅延のなく通知できるシステムをGASで作ろうというのが今回のお題です。

機能としては共有カレンダーが更新(新規追加,変更)されたら,LINEにその内容が通知されるというものを作ります。

とはいえプログラム理解するのは大変だと思うので,とりあえず動かせるようになるまでの手順を示します。

せっかく作ったので職場のLINEWORKSにも流用しましたがかなり便利です。

共有カレンダーを使っている皆さんは是非試してみてください。

LINE NOTIFYの設定

前回と違うのはLINEWORKSではなくLINEだということです。

LINEでもbot制作はできますが,今回は通知ができればいいので,Line notifyという公式bot(?)を使います。

アクセストークンの発行

notify-bot.line.me

まず,トップページの右上にある[ログイン]からLINEアカウントでログインしてください。

すると[ログイン]だった部分がアカウント名に変わるので,そこをクリックしてマイページを選択します。

画面をスクロールしていくと一番下に[アクセストークンを発行]という項目がありますので,そこの[トークンを発行する]ボタンを押しましょう。

すると下図のように自分のLINEアカウントに登録されているグループがズラーッと出てくると思います。

f:id:labhea:20190613234332p:plain

この中から,共有カレンダーの更新を通知したいトークルームを選びましょう!

もし自分にだけ来ればいいのであれば一番上の[1:1でLINE Notifyから通知を受け取る]を選択しましょう。

また,一番上のトークン名は図と同じような文言に設定しておくと,いい感じになると思います。

設定が終わったら[発行する]ボタンを押しましょう。

すると怪しげな文字列が表示されますので,忘れずメモしてください。

グループにLINE Notifyの招待

続いてLINE Notifyが発言できるように,LINEグループに招待してあげましょう。

まずはLINEの[ホーム] - [公式アカウント]からLine notifyを見つけて友達に追加しましょう。

あとはいつもどおりのやり方でグループに招待すればOKです。

GoogleカレンダーIDの確認

つづいて,監視したいカレンダーのIDを調べます。

Googleカレンダーを開き,画面左にあるカレンダーリストから共有したいカレンダーの[設定と共有]を開きます。

f:id:labhea:20190613234449p:plain

画面をスクロールしていくと,[カレンダーの統合]という項目があり,その一番目のサブ項目に[カレンダーID]というものがあるかと思います。

おそらく共有カレンダーであれば「〇〇@group.calender.google.com」みたいな長ったらしいものになっていると思います。

これをまるっとコピーしておきましょう。

Google Apps Script

いよいよ,スクリプトの設定に入ります。

カレンダーくんのダウンロード

google apps scriptはgoogleドライブのspread sheetに書き込みます。

あらかじめプログラムを記入したspread sheetを用意しましたので,こちらをダウンロードしましょう。

drive.google.com

URLをクリックすると,スプレッドシートが開くと思います。

この状態だと編集ができませんので,自分のgoogleアカウントでログインし,下記の要領でコピーを作成し自分のドライブに保存しましょう。

f:id:labhea:20190613234525p:plain

続いて,ツールからスクリプトエディタを開きます。

f:id:labhea:20190613234539p:plain

もし下のような画面が出てきた場合は,複数のgoogleアカウントでログインしているのが原因です。 右上のgoogleアカウントのところから全てログアウトし,該当のアカウントで再度ログインしてください。

f:id:labhea:20190613234606p:plain

うまくいくと,下のような画面になると思います。

f:id:labhea:20190613234619p:plain

さあ,いよいよプログラミングです!!!

といっても,最初の2行にLINE NotifyのアクセストークンとカレンダーIDをコピペするだけです笑

ダブルクォーテーションは消さないように気をつけてください。

初期化

つづいて,現段階で記入済みの予定を把握するために,ある関数を実行します。

下記の通り,実行から[initialSync]を選んで実行してください。

これを忘れると動かないので注意してね。

f:id:labhea:20190613234639p:plain

トリガーの設定

最後に,動作のトリガーを設定します。

もう一つあった[onCalenderEdit]関数が更新内容をLINEに通知する関数になっていますので, この関数をgoogleカレンダーが更新されるたびに実行するように設定します。

下図のように編集から現在のプロジェクトのトリガーを選びます。

f:id:labhea:20190613234652p:plain

すると,トリガーの編集ページに行きますので,右下の+マークからトリガーを追加します。

新規登録ページが開けたら下図のように,設定しましょう。

f:id:labhea:20190613234704p:plain

カレンダーのオーナーのメールアドレスには先程と同じカレンダーIDをはっつけましょう。

すべて終わったら保存を押しましょう。

いーじょう!

以上です。あとは適当にカレンダーを更新してみてください。

うまく設定ができていれば,1分もかからないうちにLINEに通知がくると思います。

おわりに

GASの便利さに気づいてもらえたでしょうか?

私も始めたばかりなのでまだ全然使いこなせていませんが,夢が拡がりんぐですね!

また何かこういうのがしたい!みたいなのがあったらご提案ください!

参考

作成にあたり,下記のサイトが参考になりました。

とくにカレンダーの更新情報をとってくるところとかはほぼコピペさせてもらいました。

google-apps-script.net

qiita.com