Power Automate で以下のことをやりたいとき
- Item A を取得する
- Table B を取得する
- Item A の中の Arriburte C をキーにして、List B の中 で Column D に重複する Item があるかを確認する。
- 重複がない場合は Item A を List B に登録する。
こうやればいい
この中で、Condition の設定の仕方が 記載されているが、古い version と新しい version のPowerAutomate では Advance mode があったりなかったり
なので、新しい vesion の Power Automate では
この Expression 部分を
length(outputs('Get_items')?['body/value'])
と書いてやればよい。
どういうことをやっているのか
例えば SharePoint List を使用する場合
- Table B を Get Items で取得する
- 取得する時に Filter Query で Table B の Column D に Attribute C が同じものを filtering する
- Table B の Column D に Attaribute C が存在しない場合は、Value が 空っぽで引っ張られる
- Value が空っぽ = Length がゼロ と判断する
- Length が ゼロ = Value が空っぽ = Table B に Item A が存在しない となるので、Condition が True となった場合には Create Item で Item A を Table B に作成する。
これを何に使ったか
- Outlook から送信したメールの管理表を作りたかった
- Power BI を直接 MS Exchange に繋ぐことで Email の情報は取得できるのだが、In place archive に移った email は対象外になってしまう。
- 仕方がないので、email (Item A) を送るたびに SharePoint List (Table B) に archive することにした
- PowerAutomate の Office365 の Action でArchive 自体は出来るのだが、Trigger に「メールを送信したとき」がなかった(「メールを受信したとき」はあった)
- あくまでも 送信メールを Archive したいので、仕方なく 数時間おきに取得することにした
- しかし、取得できる email の上限数が 25件だった
- 数時間に一回 25件を取得して、ひたすら SharePoint List にログを残しても良かったが、流石に重複するので SharePoint List に記録する前に既に記録済みのものを省きたかった
- Outlook email で固有のものとなるのは PowerAutomate では Conversation Id であったので、これをUnique Key として SharePoint List に記録し(= Attribute C)存在の有無を確認した後に存在しないものだけ記録するようにした。
つまり、自分の Outlook のメール内容を Archive 自動でするのに使える。
ちなみに、Power Automate でメールをArchive すると思いの外 メール内の全ての情報を引っ張ることが出来るのでオススメ。