Help us understand the problem. What is going on with this article?

暇だから全国のコロナ感染者数をTeamsに投稿するbotを作ってみた

1.概要

ジョンホプキンス大学が集計し公開している全世界のコロナ感染者数のデータを基に有志が開設したサイトからAPIを取得し、日本全国のコロナ感染者数をTeamsに投稿するbotを作成します。
感染者数が確定している前日の集計データを取得するため「あー前日はこんなにいたのかー」って感じになります。

2.取得データ

下記のサイトを利用しています。APIキーは必要ありません。
使い方はpostmanにあるので本記事以外の使い方をされたい方はご参照ください~

・コロナ感染者数

https://covid19api.com/

・POSTMAN

https://documenter.getpostman.com/view/10808728/SzS8rjbc

3.全体像

aaa.png
ccc.png
ddd.png

3-1.時間の取得(1日前・2日前・3日前)

情報を取得する時間を変数に設定していきます。
1日前のデータを取得するためには、取得する期間を「2日前~1日前」、2日前のデータを取得するためには「3日前~2日前」と設定する必要があるため、1日前・2日前・3日前の日時が必要になります。

①過去時間の取得

bbb.png
②1日前は24、2日前は48、3日前は72を設定し、それぞれ取得。
ついでにタイムゾーンの変更もやっちゃいましょう。
 ※アクションの名前を「1日前」とかに変更すると、基準時間に設定する変数が分かりやすいですよ
ccc.png

ここまで設定が終わると下記のようになります。
 ※分かりやすいようにアクションの名前を変更しています。

aaa.png

3-2.変数の設定

ここは自分が分かりやすいように、3-1で取得した1日前・2日前・3日前のデータを
変数に格納しているだけです。必要ないという方は飛ばしてもらってもOKです。

①変数へ格納
名前は任意(分かりやすく)、種類を文字列、値をタイムゾーンを変更した後の日時が格納された
変数を設定しましょう。
これを1日前・2日前・3日前の計3つを作成してください。

ddd.png
eee.png

ここまで設定が終わると下記のようになります。

bbb.png

3-3.コロナ感染者数の取得

前日と前々日の集計データを取得します。
GET: https://api.covid19api.com/country/japan?from=[過去日時]&to=[未来日時]

eee.png

ここでも分かりやすいように、取得したデータを変数に格納します

fff.png

3-4. データの加工

取得したデータをそのままJSON分析につっこんだらJSONとして認識されなかったので
原因となっている不要な部分を削除します。

ggg.png

式の詳細です
「'取得データ(1日前)'」と「'取得データ(2日前)'」ってところは画像にあるように先ほど作成した変数を選択してください。
・1日前:replace(variables('取得データ(1日前)'),'[','')
・2日前:replace(variables('取得データ(2日前)'),'[','')

hhh.png

JSONスキーマを作成し、必要なデータを抽出します。
今回は合計の感染者数と死者数、完治した数を取得しています。

iii.png

スキーマです

{
    "type": "object",
    "properties": {
        "Confirmed": {
            "type": "integer"
        },
        "Deaths": {
            "type": "integer"
        },
        "Recovered": {
            "type": "integer"
        }
    }
}

前日比を作成するため、先ほど抽出した1日前の「Confirmed」と2日前の「Confirmed」の差分を計算します
「'データの抽出(1日前)'」と「'データの抽出(2日前)'」は画像にあるように変数を選択し
続けて「?['Confirmed']」を記載してください。

式:sub(body('データの抽出(1日前)')?['Confirmed'], body('データの抽出(2日前)')?['Confirmed'])

kkk.png
lll.png

3-5. Teamsに投稿

長かったですね・・ようやく最後です
ここで設定する変数の説明です。
・Confirmed:「データの抽出(1日前)」の項目で作成された変数「Confirmed」を選択
・Recovered:「データの抽出(1日前)」の項目で作成された変数「Recovered」を選択
・出力:「前日比の算出(1日前の感染者数ー2日前の感染者数=前日比)」の項目で作成された変数「出力」を選択

jjj.png

最終的にこのように前日時点の日本のコロナ感染者数とその前日比が表示されます
昨日時点で~人感染してて、2230人も増えたのかーって感じになります

mmm.png

最後に

メンションしたい方は下記を参照ください。
チームまたはチャネル宛にメンションをする方法について記載しています。
https://qiita.com/kaitomate/items/e681cfe19cb9fb496ef2

kaitomate
普段はヘルプデスク業務をしているただのオペレータを装い、裏ではありとあらゆる自動化を趣味で行っている縁の下の力持ち的な存在。 投稿する目的は自分が忘れないためっ!!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away