yukioのアウトプット

PowerApps、PowerAutomateなど、勉強した内容、実践した内容を、自分にわかるようにかみ砕いてアウトプットしています。

【PowerAutomate】週替わりの当番を自動でTeamsに通知する(2-1)~(2-4)フロー作成編

※2022年8月現在の情報です。

 

yukio-ms365.hatenablog.com

こちらの記事の続きになります。

Power Automateでのフロー作成に入っていきます。

 

(2-1)作成開始、そしてトリガーの設定

今回は毎週決まった時間に動いてほしいフローなので・・・

(2-1-1)Power Automateのフローは

 「スケジュール済みクラウドフロー」を作成します。

 

 

(2-1-2)名前を付けて、

 「繰り返し間隔」は「1週」

 「設定曜日」を「金曜日」にして「作成」

 

 

(2-1-3)トリガーの部分を整えていきます。

 「タイムゾーン」は「(UTC+09:00) 大阪、札幌、東京

 「開始時刻」の末尾に「Z」があるので、念のため取り除いておきます。

 ※この理由を説明すると長くなるので、後日別記事にします。

  「タイムゾーン」が関係してきます。(docsはこちら

 「設定曜日」は金曜日のまま

 「設定時刻」を、フローが動いてほしい時刻に設定しておきます(ここでは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(outputs('複数の項目の取得 ローテ総人数取得用')?['body/value'])

「式」タブで「length()」と入力し、「動的なコンテンツ」タブに切り替えて、

()の中にさっき取ってきたアイテム一覧を入れる感じです。

こちらも、コミュニティで教えていただきました。

ほんと、助けていただける仲間がいるって素晴らしいです。

 

中途半端ですが、今日はここまで。

次回↓↓↓、来週の当番を計算します。

yukio-ms365.hatenablog.com