Power Automateを利用してTeamsの投稿にある添付ファイルをSharePointリストに1列ずつ保存する

今回実施しようとした内容は、「Teamsに投稿されたメッセージの写真など添付ファイルをSharePointに保存し、保存した画像をPower Appsで表示する」といったものです。

Teamsに投稿されたメッセージの写真などの添付ファイルをSharePointに保存させようとしたときに、Power Automateで躓いたポイントがいくつかあるので、そちらを紹介します。

ここでは、リストとPower Appsの連携方法などについてに説明は省略します。

(2022/11/14:記事内で列の種類が「一行テキスト」になっていた部分を「ハイパーテキスト」に修正しました)

SharePointリストの作成時の注意点

SharePointに列を作成する際、種類に「画像」というものがあったため「画像」で列を作成しました。

すると、Power Automateで対象リストを選択した際に、画像の列は認識されていませんでした。Power Automateで列を認識させるためには列の種類を「ハイパーリンク」に変更するしかありません。

なので、列の作成は「ハイパーリンク」で行います。

※「一行テキスト」だと、デバイスによって画像が表示されない場合があるため「ハイパーリンク」を推奨する。詳しくは以下リンク参照

Power Appsの画像がTeamsやモバイル上で表示されない - JBS Tech Blog

SharePointリストを用意する

Teamsのメッセージの内容を保存するためのリストを作成します。今回は、以下の列を作成しました。

  • タイトル(ハイパーリンク)
  • 本文(複数行テキスト)
  • 画像(ハイパーリンク)
  • 画像A(ハイパーリンク)
  • 画像B(ハイパーリンク)

画像の列が3つある理由は、このリストをPower Appsに連携させるためです。
※Power Apps内で画像を表示させる際は、一列ごとしか画像を表示することができない。

PowerAutomateの作成

最新のスレッドを指定する

ここからは、実際にPower Automateを作成していきます。

Power Automateの「メッセージを取得します」でチャネルを指定し、「メッセージ詳細を取得する」のアクションで本文や添付ファイルを取得できるようになりますが、メッセージIDの指定で躓くポイントがありました。

仮にここを動的コンテンツで組んでしまうと、「Apply to each」が自動的設定されるため、仕様として最新20件を取得してしまいます。新しく投稿された1件だけを指定したいため、アレイ配列を使用して最新の1件を絞り込みます。

そのためにはまず、メッセージIDを配列として取得し直す必要があります。

「配列変数に追加」では、int関数を使用して追加していきます。配列内にある最後の値が最新のメッセージIDになるので、それを指定するためにmax関数を使用します。

※「最新のメッセージIDを取得」やこの後に登場する「添付ファイルURLを配列する」も「変数を初期化する」アクションの名前を変更しています。

int(items('メッセージIDをアレイに格納')?['ID'])
max(variables('IDs'))
variables('IDs')[sub(length(variables('IDs')),1)]

これで最新の1件のメッセージIDを取得することができました。

「メッセージ詳細を取得する」のメッセージIDに上記で設定した"Max_ID"を入れることで、最新のメッセージの内容を取得することができます。

添付ファイルを受け取る

メッセージに添付された添付ファイルを受け取るフローを作成します。添付ファイルが複数あることを想定して、添付ファイル用の配列を作成します。

配列の作成方法は、”最新のスレッドを指定する”とほとんど同じ方法で作成します。

違いとしては、今度は添付ファイルを配列するため、”Apply to each”内の出力箇所をメッセージ一覧ではなく、添付ファイル一覧に変更する点が1つです。

もう一つは、「配列変数に追加」の値に入れる式が以下のものに変わる点です。

items('Apply_to_each')?['contentUrl']

これで、メッセージに添付された画像などのファイルを配列として取得することができました。

SharePointリストに保存する

ここまでで、最新の投稿のメッセージ内容および添付ファイル内容を取得することができています。最後に、ここまで入手した情報をSharePointリストにそれぞれ保存させていきます。

今回は、画像などの添付ファイルが1つの時、2つの時、3つの時、4つの時、それ以外(0を含む)のパターンでリストに保存させる数が変わるので、条件を設定しそれぞれの場合での動作を作成します。

条件の分け方は、length関数を使用し添付ファイルURL配列内の数によって分けるように設定します。この条件の分け方について詳しい説明は以下の記事を参照してください。

FormsとPower Automateで利用条件への同意フォームのようなものを作る - JBS Tech Blog


SharePointリストに保存させる項目は、「タイトル」「本文」「画像」「画像A」「画像B」だったので、それぞれの列に以下のように当てはめていきます。

<1つのパターン>

タイトル・・・件名
 内容 ・・・本文PlainTextContent
 画像 ・・・variables('添付ファイルURL配列')[0]

<3つのパターン>

タイトル・・・件名
 内容 ・・・本文PlainTextContent
 画像 ・・・variables('添付ファイルURL配列')[0]
 画像A ・・・variables('添付ファイルURL配列')[1]
 画像B ・・・variables('添付ファイルURL配列')[2]

最後に

今回は、Teamsの投稿内容を添付ファイルも含めリストに保存させる方法を解説しました。

添付ファイルのリストへの保存方法は、ひとつの列に対して「 , 」で区切り保存させる方法もありますが、今回はそのリストをPower Appsに利用するため、分けて保存させる方法で行いました。

Power Appsの画像の表示は、画像もしくは画像のURLがあれば表示されるので今回のようなURLを保存させる方法でうまく実行することができました。

アレイを利用して最新の1件だけに絞る工程は、その他の用途でも使用する場面が出てくるかもしれないので、その際は是非参考にしてみてください。

執筆担当者プロフィール
井上 武尊

井上 武尊(日本ビジネスシステムズ株式会社)

現在は、Intuneまわりを扱っています。休みの日は家でのんびり過ごすことが多く、よくゲームしています。

担当記事一覧