【PowerAutomate】コロナ情報通知bot


1.概要

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

2.取得データ

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

・コロナ感染者数

https://covid19api.com/

・POSTMAN

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

3.全体像



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

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

①過去時間の取得


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

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

3-2.変数の設定

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

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


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

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

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

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

3-4. データの加工

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

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

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

スキーマです

{
    "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'])


3-5. Teamsに投稿

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

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

最後に

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