memomoji | nanamoji

Microsoft365周辺、Power Appsの勉強、備忘録

Power Automateで今月分の進捗を入れていない人に通知を送る 後編

Power Automateで今月分の進捗を入れていない人に通知を送る 前編 - memomoji | nanamojiの続きです。

やりたいこと

毎月3日に、前月結果欄に空白のものがある担当者に督促通知を送信します。

目標リスト
5月3日の場合は、「kekka04」列が空白の人だけが対象になります。

実装

フロー全体

1. スケジュール済クラウドフロー

毎月3日の12時に設定しています。翌営業日に見てもらえばいいので曜日は気にしていません。(苦情が来たら検討します)。

2. 変数を初期化する、変数の設定

変数の設定

次の「複数の項目の取得」のフィルタークエリで、対象列を指定するための変数です。

フィルタークエリ

concat('kekka',addDays(convertTimeZone(utcNow(),'UTC','Tokyo Standard Time','yyyy/MM/1'),-1,'MM'))

convertTimeZoneでutcNow() を日本時間に変換し、formatの指定で日付を1日にします。

addDaysでマイナス1日して前月を取得し、formatで月を2桁の形で取得します。

concatで「kekka」という文字列と今取得した月2桁を結合させます。

これで、8月に実行した場合は「kekka07」という値が変数「kekka」に入ります。

その前に、目標リストの「4月結果」~「3月結果」を変数で指定しやすくするために、列名を「kekka04」~「kekka03」にして作り直します。

※結果列の種類が「複数列」だとうまいくいかないかも知れません。未検証です。

最初、数字で始まる列名にしていたせいで無駄な遠回りをしました。

SharePointの列の内部名については、こちらのサイトを参考にさせていただきました。

【SharePoint】列の内部名について – Livestyleクラウドサービス

3. SharePoint > 複数の項目の取得

複数の項目の取得

ここで、上記の変数kekka が空白(null)のものを抽出しています。

4. あとは、前回の記事と同じフローです。

アダプティブカードの文面だけ書き換えます。

結果

結果
前月結果が未入力の担当者に、アダプティブカードが送られました。

当初、列名を変数にするのは難しすぎるのではないだろうかと思い、Switchで12個の分岐を作って実現しようとしていました。ですが、なぜかクリップボードの利用がうまくいかなかったり、複数項目の取得が複数あるとそれ以降のステップも上に合わせて変えなければいけないことに気付き、ヒーヒーと変数に取り組みました。

これも応用が利きそうなので、やっておいてよかったです。

列の内部名の仕様については、公式の情報を見つけることができなかったのでそのうち出会えればと思っています。