はじめに
新型コロナウイルスの感染者数が日々気になるので、簡単に通知してくれる手段がないかなあと思っていました。そんなときにGASを使えば簡単にLINE Botができることを知ったので、愛知県の新型コロナウイルスの感染者数を通知してくれるLINE Botを作りました。
感染情報のデータ
新型コロナウイルスの感染情報は新型コロナウイルス対策ダッシュボードに掲載されている、厚生労働省の報告に基づくデータを利用しています。更新頻度がまちまちですが、今回はこちらを使っていきます。
実際のデータ
https://www.stopcovid19.jp/data/covid19japan.json
LINE Bot
LINE Botを利用するためには、LINE Developersに登録して、アクセストークンとユーザーIDを取得する必要があります。
ここから登録が可能です。
https://developers.line.biz/ja/
詳しいやり方は以下の記事を参考にしました。
スクリプト
実際のスクリプトはこんな感じです。
function SEND_MESSAGE() {
// 新型コロナウイルスのデータが入ったJSONからデータを取得します
var COVID19_URL = 'https://www.stopcovid19.jp/data/covid19japan.json';
var json = UrlFetchApp.fetch(COVID19_URL).getContentText();
var json_data = JSON.parse(json);
// json_data.lastUpdate は日付です
// 愛知県のデータを取得する場合は、json_data.area[22]
var update_date = json_data.lastUpdate;
var num_patients = json_data.area[22].npatients;
var num_deaths = json_data.area[22].ndeaths;
var data_arr = [update_date, num_patients, num_deaths];
// 通知の内容を記載します
var date_message_ver = Utilities.formatDate(new Date(update_date), 'JST', 'MM月dd日');
var message = "【" + date_message_ver + "の感染者情報】\n" + "総感染者数:" + num_patients + "人\n" + "総死者数:" + num_deaths + "人";
//Logger.log(message);
// アクセストークン等を記載して、通知をする準備をします
var access_token = 'YOUR_TOKEN';
var user_id = 'YOUR_LINEDEVELOPERS_ID';
var line_url = 'https://api.line.me/v2/bot/message/push';
var options = {
"headers": {
"Content-Type": "application/json; charset=UTF-8",
'Authorization': 'Bearer ' + access_token,
},
"method": "post",
"payload": JSON.stringify({
"to": user_id,
"messages": [{
"type": "text",
"text": message,
}]
})
};
// 通知します
UrlFetchApp.fetch(line_url, options);
}
スクリプトの中に、アクセストークンなどが出てきます。これらを直接スクリプトに記載するのはよくないので、GASのスクリプトプロパティという機能を使って保管しておきましょう。やり方は以下の記事で簡単に記載しています。
定期実行の登録
GASでLINE Botを作る大きな理由は、定期実行が簡単にできるからです。毎日ある程度決まった時間に新型コロナウイルスの感染者数の通知が来るようにすることは、GASでは簡単にできます。
やり方は、以下の通りです。
- エディタ画面の左側にある時計のボタンをクリック
- 画面右下にある「トリガーを追加」をクリック
- 時間等を設定する
これで定期実行で、新型コロナウイルスの感染者数が通知されるようになります。
さいごに
今回は簡単ではありますが、新型コロナウイルス感染者数が通知されるLINE Botを作成してみました。通知の内容がとても簡素なので、そこを更新してリッチなものにしていきます。