毎日新型コロナの感染者を気にする友達
私には毎日コロナの感染者数を確認して一喜一憂する友人がいます。
宮古島は東京と異なり、周りを海に囲まれた閉鎖的な地域なので敏感になってしまうのは仕方がないのですが。。
ただ「HPに毎回アクセスして感染者数をチェックするのは非効率」なので、今回はそれをLINEで自動化するシステムを作ってみることにしました。
宮古島のコロナ感染者を毎朝LINEで教えてくれるbotの作り方
宮古島市のコロナ対策サイトへアクセス
まずはデータを抽出するためのサイトへアクセスします。
今回は、宮古島市の公式HPが対象です。
抽出したデータを最適化してスプレッドシートに入力
<手順>
- IMPORTHTML関数でサイト内のテーブル情報を取得
- CLEAN関数で不要な改行を削除
- IMPORTXML関数でサイト内文字列を取得
- REGEXREPLACE関数で日付情報を抽出
<実際のコード>
IMPORTHTML("https://www.city.miyakojima.lg.jp/kurashi/kenkou/2020-0306-1115-78.html","table",1) //1 CLEAN(B4) //2 IMPORTXML("https://www.city.miyakojima.lg.jp/kurashi/kenkou/2020-0306-1115-78.html","//*[@id='content']/h3[3]/strong") //3 REGEXREPLACE(REGEXEXTRACT(B12,"【[^現在]*"),"【","") //4
ちなみに、XMLパスの取得はMacだとこんな感じです。
LINE Notifyでトークン発行
<手順>
- LINE Notifyにログイン
- 右上の名前からマイページを選択
- トークン発行(メモ必須
- LINE Notifyのアカウントをグループに招待
Google Apps Scriptでコーディングし、実行
<手順>
- GASにログイン
- 以下のコードをコピペ
- 赤字箇所を自分用に修正
- 画面上部の▶︎マークで実行
- スプレッドシートへのアクセスを許可
- 画面上部の[実行]からlineNotification関数を実行
- 作成したコードを保存
function lineNotification() { var ss = SpreadsheetApp.openById('スプレッドシートID'); //スプレッドシートIDは「https://docs.google.com/spreadsheets/d/〇〇/edit」の〇〇の箇所 var sheet = ss.getSheetByName('data'); var text1 = "新規:"; var text2 = "入院者:"; var text3 = "退院者:"; var text4 = "▼参考"; var url = "サイトURL"; var date = sheet.getRange(16,2).getValue(); var shinki = sheet.getRange(8,2).getValue(); var nyuin = sheet.getRange(8,4).getValue(); var taiin = sheet.getRange(8,5).getValue(); /*日付や感染者情報のセルを指定 getRangeの数値は人によって異なります*/ var content = date + "\n\n" + text1 + shinki + "\n" + text2 + nyuin + "\n" + text3 + taiin; sendHttpPost_lineNotification("\n" + content + "\n\n" + text4 + "\n" + url); } function sendHttpPost_lineNotification(content){ var token = ['トークンID']; var options = { "method" : "post", "payload" : {"message": content,}, "headers" : {"Authorization" : "Bearer "+ token} }; UrlFetchApp.fetch("https://notify-api.line.me/api/notify", options); }
LINEで通知を確認
トリガーを設定しスケジューリング
<手順>
- 先ほどのコード画面から▶︎の隣にある時計マークをクリック
- 遷移したサイトの右下から[+トリガーを追加]をクリック
- 以下の設定で保存(時刻はカスタムできます)
完成
これで「毎朝7:00〜8:00に宮古島のコロナ感染状況を市のHPから取得し、それをLINEで通知してくれるbot」が完成しました。
残念ながら日本版LINEではグループURLが作成できないのですが「お問い合わせ」or「インスタ」でメッセージいただければグループに招待するので興味のある方は連絡くださいね!
※ちなみにこのテクニックを応用すれば、大学からのメッセージをLINEで自動通知してくれる仕組みも簡単に作れますw