やりたいこと

デジタル庁の元組織となる内閣官房IT総合戦略室が、2021/5/27に「新型コロナワクチンの接種状況」を公開したことをうけ、東京都かつ2021/5/23以降のデータをAirtableに取り込み、性別別にグラフで表示しようと思います。

コロナワクチンの摂取状況を取得[1]

APIの仕様に基づき、HTTPの「Make a request」モジュールで、最新データにアクセスします。

会員登録やトークンの発行などはいらないようです。

[1]の実行結果を見ると、出力されるデータは、JSONの各オブジェクトを、「,」ではなく、改行文字で区切ったデータであるndjsonという形式です。

JSON Stringの形式に変換[3]

Integromatで扱いやすいように、「Text Parser」の「Replace」モジュールを使い、JSON stringの形式に合わせようと思います。

ndjsonをJSON stringの形式に変換するには、中括弧で囲われているオブジェクトの間で改行されているところを「,」に置換する必要があります。

そこで、「Pattern」は正規表現で、置換元を表すので、改行を表す「\n」を使い、「}\n{」とし、置換後の値を表す「New value」には、「},{」とし、見やすくするために、「,」と「{」の間にはIntegromatが用意しているキーワードの「newline」を入れています。

[3]の実行結果を見ると、期待通りに、間に「,」が入っていることが分かります。

JSON Stringを解析[5]

各オブジェクトが「,」で区切られているだけではJSONの形式にならないので、[3]で出力されたデータを「[]」で囲み、「data」というキーのバリューとし、全体を「{}」で囲ったものを、Integromatで扱いやすいように「Parse JSON」モジュールで解析することとします。

[5]の実行結果を見ると、摂取状況を表すレコードを1つの要素とした配列が出力されていることが分かります。

Iterator[8]

配列で出力されたそれぞれの要素について後続の処理をしたいので、Iteratorを使い、配列をバンドルに変換します。

[8]の実行結果を見ると、期待通りにバンドルに変換されていることが分かります。

レコードを追加[7]

[8]で出力されたバンドルをAirtableに追加したいのですが、データが大きいので、フィルターを使い、「prefecture」については、東京を表す「13」、日付は「2021/5/22」より後にしています。

「date」も「2021/5/22」もテキストなので、日付同士で比較するために、parseDate()をしています。

Airtableで予め用意しておいたテーブルを選択し、対応するカラムにデータを入れていきます。

最後にAirtableで「Chart」のアプリを使い、「Chart Type」は「Bar」、X軸に「Date」、Y軸に「Group by Gender」でまとめた「Count」の「Sum」を「Stack」で積み重ねることでグラフが完成します。

以上、コロナワクチンの摂取状況をAirtableで性別別でグラフ化についての説明でした。