ルドルフもわたるふもいろいろあってな

Microsoft 365、Power Platform、PowerShellについて調べたことや検証したことなどを投稿します。技術の話は面白い。

【質問回答】【Power Automate】SharePoint のリストアイテムに添付されたファイルのパスをメールで送りたい

ましゅまろで質問をいただいたので回答します。

こんなましゅまろをいただきました。

質問内容は「フローでどうやってSharePointリストにアイテムにファイルが添付されているかを判定するのか」ですね。

回答します。

「アイテムが作成または変更されたとき」トリガーの出力には「添付ファイルあり」というプロパティがあります。この「添付ファイルあり」プロパティで添付ファイルの有無を判定できます。

これを使って掲題の内容を実現するフローを作ってみました。GitHubにアップロードしました。
github.com

フローの解説をします。

フロー図

アクションの設定を閉じた状態のフロー図


開いた状態のフロー図


フローの使用イメージ

トリガーが実行対象としているSharePointリストにアイテムを投稿します。ここでは2つのファイルを添付します。

フローが実行されました。

添付ファイルのURLが記載されたメールが届きました。OK

では次に、同じリストに添付ファイルの無いアイテムを投稿します。

先ほどと同じくフローが実行されました。

ファイルが添付されてない旨のメールが届きました。こちらも期待通り。OK

ポイント解説

フローの各アクションの処理内容についてはGitHubで公開しているフローを参照してください。今回の投稿ではポイントだけ解説します。

ポイント1:添付ファイルの有無は「添付ファイルあり」プロパティで判定できる

「添付ファイルあり」プロパティは対象のアイテムにファイルが添付されているかどうかをbool値で返します。

  • ファイルが1個以上添付されている - True を返す
  • ファイルが添付されていない - False を返す


「添付ファイルあり」プロパティはこのトリガーのbodyにある HasAttachments を表しています。

ポイント2:「Apply to each」と「文字列変数への追加」を使って添付ファイルのハイパーリンクを生成する

「ファイルが添付されている」が True である分岐で、添付ファイル個数だけApply to each を回して文字列変数に添付ファイルのファイル名とハイパーリンクを追加します。これがメールの本文の一部になります。


ポイント3:本文の改行は<br/>タグにすること

メールの本文では改行したい箇所を<br/>タグを使って表す必要があります。そのため、replace関数を使って改行コードを<br/>タグに置き換えています。

replace(outputs('作成-メール本文(改行コードを変換する前)'),decodeUriComponent('%0A'),'<br/>')

ちなみに

「ファイルが添付されている」が False である分岐では固定の文字列をメール本文に設定しています。この分岐でもreplace関数を使って改行コードを<br/>タグに置き換えています。

フローの最終的なアクションであるメール送信アクションでは、メール本文を定義した変数を本文に配置しています。

フローをGitHubで公開しました(再掲)

github.com

最後に

今回の「リストにファイルが添付されていることか判定したい」のように要望がハッキリしていて、かつ、使うトリガーも決まっている場合にどうやってフローでそれを実現するかを調査する方法についてもいつか紹介したいと思います。

今回は以上です。

2022/8/5追記:質問者のかたからその後の状況を連絡をいただきました

質問者と思われるかたからまたましゅまろをいただきました。無事実装できたようです。よかった。
(`・ω・´)