この記事では、Microsoft Power Automateを使って、Microsoft SharePointドキュメントライブラリに保存されている画像をMicrosoft Teamsチャットに送信する方法について紹介します。
Power AutomateフローとSharePointドキュメントライブラリの構成
SharePointドキュメントライブラリ内に画像を用意する
SharePointのドキュメントライブラリ内に、Teamsチャットに投稿する画像ファイルを格納します。
Power Automateのフローを作成する
以下のようにPower Automateのフローを作成します。
フローの各アクションの詳細
パスによるファイルコンテンツの取得
貼り付ける画像をSharePointドキュメントライブラリから取得します。
作成
「パスによるファイルコンテンツの取得」で取得した画像のコンテンツをbase64形式にエンコードします。
式の中身は下記の通りです。
base64(outputs('パスによるファイル_コンテンツの取得')?['body'])
「作成」アクションを省略し、「チャットまたはチャネルでメッセージを投稿する」アクションの「Hosted Contents」でbase64関数を使用しても大丈夫です。
チャットの作成
メッセージを投稿するため、チャットを作成します。
チャットまたはチャネルでメッセージを投稿する
Group chatパラメータは「チャットの作成」の会議IDを使用します。
MessageはHTML形式で書いて、画像を添付したい部分に以下のようなイメージタグを追加します。
<img src = "../hostedContents/{ID}/$value">
IDはHosted Contentsの「@microsoft.graph.temporaryId」を書きます。
Hosted Contentsには以下の3つを書きます。
- temporaryId
- イメージタグで使うIDを指定します
- contentBytes
- コンテンツの中身を指定します
- 「作成」アクションでBase64形式に変更したファイルコンテンツを入れます。
- contentType
- コンテンツの形式を指定します
- ドキュメントライブラリの画像ファイルの拡張子がjpgの場合は「image/jpg」、pngの場合は「image/png」のように指定します
実行結果
以下のように画像付きチャットが投稿されていることを確認できます。
応用:複数の画像を添付したい場合
複数の画像を添付したい場合は画像の数分「パスによるファイルコンテンツの取得」、「作成」アクションを用意して画像を取得して、以下のように「チャットまたはチャネルでメッセージを投稿する」アクションのMessageとHosted Contentsを修正することで実装できます。
Message
<img src = "../hostedContents/aaa/$value">
<img src = "../hostedContents/bbb/$value">
Hosted Contents
[
{
"@microsoft.graph.temporaryId":"aaa",
"contentBytes": "@{outputs('作成')}",
"contentType": "image/jpg"
},
{
"@microsoft.graph.temporaryId":"bbb",
"contentBytes": "@{outputs('作成_2')}",
"contentType": "image/jpg"
}
]
htmlの中に「width」を使って画像のサイズを調整したり、「align」を使って左寄せや右寄せを行う事はできませんでした。同様に、CSSを使った方法でもできませんでした。
また、「チャットまたはチャネルでメッセージを投稿する」アクションで「投稿者」がフローボットの場合は以下のようなエラーが発生するため、フローボットからの投稿はできません。
'body/hostedContents'は、操作スキーマに存在しなくなりました。ワークフローを再保存する前に、削除する必要があります。
おわりに
この記事ではMicrosoft Power Automateのフローを使って、Microsoft SharePointに保存されているイメージをMicrosoft Teamsチャットに投稿する方法について紹介しました。
よく使われる画像を複数の人にTeamsの個人チャットで送るときなどに活用してください。