【PowerAutomate】週替わりの当番を自動でTeamsに通知する(2-1)~(2-4)フロー作成編
※2022年8月現在の情報です。
こちらの記事の続きになります。
Power Automateでのフロー作成に入っていきます。
(2-1)作成開始、そしてトリガーの設定
今回は毎週決まった時間に動いてほしいフローなので・・・
(2-1-1)Power Automateのフローは
「スケジュール済みクラウドフロー」を作成します。
(2-1-2)名前を付けて、
「繰り返し間隔」は「1週」
「設定曜日」を「金曜日」にして「作成」
(2-1-3)トリガーの部分を整えていきます。
「タイムゾーン」は「
「開始時刻」の末尾に「Z」があるので、念のため取り除いておきます。
※この理由を説明すると長くなるので、後日別記事にします。
「設定曜日」は金曜日のまま
「設定時刻」を、フローが動いてほしい時刻に設定しておきます(ここでは8:30)
(2-2)RotationListから前回の当番情報を取ってくる
「SharePoint」の「複数の項目の取得」を使って、
前回の当番情報を取得してきます。
※初回の場合は、RotationListに手動で前回の当番を入れておく必要があります。
(2-2-1)「サイトのアドレス」と「リスト名」は、前回作ったRotationList
「並べ替え順」に「Date desc」を指定することで
「日付の降順(新しい順)」に並べ替えることができます。
そうした上で「上から順に取得」に「1」を指定することで、
前回分だけを取得することができます。
※もっと美しい取得方法があるのかも?とも感じています。
(2-3)変数の初期化
続いて、次週の当番計算や、RotationListへの情報格納に使う
各種変数を用意していきます。
(2-3-1)日付情報を格納する変数を初期化します。
名前は「date_Monday」にしました。
「値」の欄に入れた関数はこちら
convertTimeZone(addDays(utcNow(),3), 'UTC', 'Tokyo Standard Time’)
金曜日に対して、月曜日の値を保存したかったので
addDays関数で3日後を計算し、
convertTimeZone関数で日本時間に変換して入れています。
(2-3-2)次は「来週の当番が誰か?」のIDを保存する変数です。
ここでは単純に名前をつけて、仮の値を入れておくのみです。
後で計算で使います。
※今回は3人ローテなので、同様の変数を3個(名前「t1」「t2」「t3」)
そして、計算をするときの一次情報を保存する変数「tmp」を初期化しました。
(2-4)マスターリストの件数を変数に保存
今回、今週の当番から来週の当番を計算するにあたり
「割り算の余り」を使っていきます(詳しいことは後程)。
そのため、「マスターリストに何件保存しているのか?」という値、
要するに「何人でローテしているか?」の情報が必要でした。
その処理をしていきます。
(2-4-1)SharePointの「複数の項目の取得」を使って
マスターリストから全件取得してきます。
(2-4-2)これでも全然いいんですが・・・
このままでフローを保存するとこんな警告が出ます。
読んでみると
「全件取ってこいって言ってるけど、リストの件数大丈夫?」
みたいなことかな?と解釈しました。
確かに、全件取ってくるとなると、対象のリスト件数が膨大だと大変ですよね。
このことを、所属しているコミュニティで質問してみたら、
「フィルタークエリを何かしら入れたら警告消えると思うよ」
とのアドバイスを頂きました。
そこで・・・
(2-4-3)このようなフィルタークエリを入れてみましたところ、
無事に警告を消すことに成功しました。
IDには1以上の値しかありませんので、
このように指定しても、全件取ってくることに変わりはありません。
【注意】
今回の操作は、対象のリスト「ToubanSample」が、
9行程度の少ない件数だからできたことです。
件数の膨大なリストから全件取ってくると、どこかで不具合が起きてくるはずです。
何件以上で不具合が起きるのか?はわからないので、
後日検証してみようと思います。
(2-4-4)先ほどの(2-4-3)で取ってきたリストを使って、
ローテ総人数を計算して変数に保存していきます。
入れた関数はこちら
「式」タブで「length()」と入力し、「動的なコンテンツ」タブに切り替えて、
()の中にさっき取ってきたアイテム一覧を入れる感じです。
こちらも、コミュニティで教えていただきました。
ほんと、助けていただける仲間がいるって素晴らしいです。
中途半端ですが、今日はここまで。
次回↓↓↓、来週の当番を計算します。