DX学校秩父校 by MAREMI

Google App Script と Google Formsで安否確認Botを作ってみた

こんにちは!MAREMI(マレミ)の遠藤です。

年初に能登半島大震災が発生しました。
いつも地震は予想もしないところからやってきます。

南海トラフ地震や東京大地震など、まだまだ震災の怖さに私達は悩まされそうですね。

こうした台風対策、地震対策、パンデミックといった災害において、どのようにして事業を継続させるかという観点で、BCP(Business Continuity Plan:事業継続計画)対策というものが最近注目されているようです。

【やったこと】

そこで今回、以下Googleサービス、Slack、気象庁防災情報XMLを使って安否確認Botを作ってみました。
・Google App Script
・Google Forms

投稿イメージはこんな感じです。



Google App Scriptでは時間間隔を指定したバッチ処理ができます。

今回は10分ごとにプログラムが走って、新たに地震情報を検知したら、SlackにGoogleフォームのURLが追加された投稿を行うというBotを作成しました。


【気象庁防災情報XMLフォーマットについて】

気象庁が提供している防災情報XMLについては、以下URLにてアクセスできます。
https://www.data.jma.go.jp/developer/xml/feed/eqvol_l.xml


上記、赤枠で囲んでいる部分が地震に関する情報になっていて、そこが10分以内に発生していたら検知して地震があったとお知らせしてくれるという仕組みになります。

具体的には10分以内のentry要素内に「震度速報」というワードがあった場合に、そのlinkを参照します。
link内は以下のようになっており、Headline→titleとBody→Pref→Areaの情報を使って地震に関するテキスト情報を作成します。


【Google App Scriptに記述したプログラムコード】

今回作成したソースコードについては以下です。
初期値設定にある「google_form_url」と
postSlack関数内の「payload」にSlackのTokenとChannel情報を準備入力してもらえればすぐ使えます。


【Google App Scriptの作成】

以下URLからGoogle App Scriptを表示します。
https://script.google.com/home

エディタ > コード.gsに上記で作成したプログラムコードを貼り付けます。


【Slack Appの作成】

Slack連携において、Slack APIを使います。Google App ScriptのライブラリからSlack Appを作成する必要があります。
ライブラリの右の+ボタンを押下し、以下Slack用のスクリプトIDを入力します。

1on93YOYfSmV92R5q59NpKmsyWIQD8qnoLYk-gkQBI92C58SPyA2x1-bq

上記キャプチャのようにライブラリの下にSlackAppというのが作成されていれば完了です。

【Slackアプリ】
以下からslack apiのページを表示します。
https://api.slack.com/apps

Create an App > From scratch > App Nameと連携先のWorkspaceを指定 > Create App

これでSlackアプリが作成されます。


【Slack Botの設定】

OAuth & Permissions > Scopes > Add an OAuth Scope を選択します

パーミッション選択では以下を追加します。
・chat:write
・chat:write.public


ページ上部にあるInstall to Workspaceをクリックし、アクセス権限を許可すれば、Slack BotのWorkspaceへの導入が行われます。

OAuth Tokens for Your Workspace に Bot User OAuth Token が表示されていれば完了です。
上述したプログラム内のpayload内のtokenに記述します。

【Slack上でBotによる投稿を行いたいチャンネルIDを取得する】
投稿したいチャンネル上で、右クリック > コピー > リンクをコピー します。
上述したプログラム内のpayload内のchannelに記述します。


【Google App Scriptでのデプロイ作業】

GAS上の右上にあるからデプロイから新しいデプロイを作成し、情報を入力してデプロイで完了します。


【Google App Scriptのトリガー設定】

Google App Scriptのトリガーに移動します。

トリガーを追加から、実行対象の関数(ここではgetJisinkun)を選択し、時間などトリガーを発生させたい条件を入力します。


以上で完了です。

SNSでシェアする