概要
前回の続きです。
Power Automateによる「検温報告」の仕組み(1)
Power Automateによる「検温報告」の仕組み(2) - 検温報告を求めるフロー
Power Automateによる「検温報告」の仕組み(3) - 検温報告を受けるフロー
毎日20時に、スケジュール実行してユーザーに一斉にメッセージを投稿するフローを作成します。
フローの概要はこんな感じです。
実行ステップ
トリガー
LINE WORKS APIのシークレット取得
最初にLINE WORKSのAPI IDなどのシークレットを取り出しています。
シークレットはAzure Key Vaultに格納しています。
各アクションの設定で、「セキュリティで保護された出力」をオンにしておくとよいと思います。
LINE WORKSのAPIを触った方なら、見たらわかると思いますが、新APIにはまだ対応していません。(そのうち直します)
その後の変数の初期化や、JSONの解析は、LINE WORKSのシークレットをJSONにして、解析しているだけです(参照しやすくするためだけの処理)。
メンバーリストの取得
メンバーリストを取得するAPIを叩きます。
旧APIでは、最大のページサイズが100名ぶんとなっているため、それ以上のユーザーがいる場合は、ループを回してアレイ変数に格納するとよいです。
当社では、100名までいくことは当分なさそうなので、1回叩いて終わりにしています。
LINE WORKS Developers - メンバーリスト照会
ユーザーごとの処理
条件アクションの中身です。
ユーザーリストが正常に取得で来たら、Apply to Eachでユーザーごとにループを回します。
「条件 2」はメンバーリストに外部ユーザーやBotも含まれるかと思って付けたのですが、社内のメンバーだけだったので必要なかったですね。
もし何らかの絞り込みを行うのであれば、アレイのフィルター処理アクションのほうが階層が深くならず、スマートだと思います。
行IDの設定
ユーザーから報告が来た際にExcelのリストと照合するためのキー列として利用するため、現在時刻を文字列としてIDに利用しています。
ミリ秒単位にしておけばかぶることはないかなと安直に決めましたが、かぶらなければExcelシートの行番号でもなんでもいいと思います。
formatDateTime(convertTimeZone(utcNow(), 'UTC', 'Tokyo Standard Time'),'yyyy/MM/dd_HH:mm:ss.fff')
Botによるメッセージ投稿
メッセージをJSONでちまちま書いていきます。
選択アクションを使ってごにょごにょすると、もう少しスマートに書けると思いますが、ご勘弁。
LINE WORKS Developers - トーク共通プロパティ
Callbackを受け取ったときに、紐づけできるよう、postbackに現在時刻から生成したIDをJSONで書いています。(要URLエンコード)
{
"q": "q1",
"id": "@{variables('ID')}"
}
(q は質問番号を表します→検温報告を受けるフローで使用)
Excel への記録
回答があったときに記録するように、Excelにあらかじめ行を作っておいて、このフローはおしまいです。
検温結果や咳などの列は、「検温報告を受けるフロー」で記入していくため、ここでは空欄のままです。
まとめ
特段ひねりのないフローだと思います。
「検温報告を受けるフロー」は別記事で。