見出し画像

SharePointリストからTeamsに画像投稿する自動化(Power Automateクラウド)

SharePointリストの画像の列を使って、Teamsのチャネルに画像を投稿する自動化を作ってみました。
※Power AppsのデータソースをSharePointリストにした時にも活用できます。

画像は1枚
ファイルサイズは、3MB未満(3MB以上はファイルリンク)にしています。
※画像は、4194304バイト未満の制限があります(4MB未満)。

チームメンションができるフローも公開しました。

1.リストの作成


最初にリストを作成します。リスト名は、「TeamsImagePost」にしました。
※リスト名、列名は日本語でもOKですが、フローの式などが変わってしまうので、ご注意ください。

  • タイトル(1行テキスト)→Teamsの件名

  • Body(複数行テキスト)→Teamsの本文

  • Image(画像)→Teamsの本文

リストの設定で添付ファイルは「無効」にしてください。
仕様変更で画像の保存先が、SiteAssets(サイトのリソースファイル)では無く添付ファイルの保存先と同じになるようです。

2.フローの作成

このフローは、トリガーをPower Apps(V2)に変更できます。また、新しいデザイナーを使っています。

①フローは、自動化したクラウドフローから、フロー名を入力、「項目が作成されたとき」、「作成」をクリックします。

②トリガーの「項目が作成されたとき」のサイトのアドレス、リスト名を選択します。

次にトリガーの設定をします。この手順は、アップデートで必要なくなるかもしれません。
※次のアクションでループ処理になるのを回避するための設定です。

③「設定」の分割をOnにし、配列の「triggerOutputs()?['body/value']」を選択します。

④アクションの追加で、SharePointの「項目の取得」を追加します。サイトのアドレス、リスト名を選択し、「ID」に動的なコンテンツからIDを追加します。
※動的なコンテンツで「ID」が表示されない場合は、式で追加してください。

⑤アクションの追加で、SharePointの「SharePointにHTTP要求を送信します」を追加します。サイトのアドレス、方法GET、URIは下記を追加します。
※@{body('項目の取得')?['ID']}は、項目の取得のIDです。動的なコンテンツから追加して画像のようにしてください。
※クラシックデザーナーであれば、コピペで下記JSONを追加できます。
※リスト名を変更した場合は、'TeamsImagePost'を'Teams画像投稿'のようにしてください。

_api/web/lists/getbytitle('TeamsImagePost')/Items(@{body('項目の取得')?['ID']})

⑥画像列の情報を式で取得するので、アクション名『アイテムを取得』に変更し短くします。
※式が長くなるのを避けるためと、何のアクションか分かるように変更しました。

⑦アクションの追加で、データ操作の「作成」を追加します。アクション名を『Image』に変更し、下記式を追加します。これで画像列の情報がJSONに変換されるので、式で画像のJSONから値を抽出できるようになります。

json(body('アイテムを取得')?['d']?['Image'])

次にテストでフローを実行します。

⑧「保存」をクリックします。

⑨リストにアイテムを作成します。画像は3MB未満にしてください。投稿する画像にはサイズ制限があるためです。
※サイズの制限ですが、4MBにしていてエラーが頻発したので、3MBにしました。このフローを作成後に、ご自身で調整してください。

アイテムを作成した後、フローが実行したら実行履歴からImageのアクションを展開します。画像のようにJSON形式になっているので、outputs関数などを使って必要な値を取得していきます。

⑩Teams画像投稿フローの実行履歴から、成功したフローを展開します。Imageのアクションを展開して、JSON形式になっていることを確認します。
※次のアクションでは、/SiteAssets以降のパスをoutputs関数、slice関数、indexof関数を組み合わせて抽出します。

ここから先は

3,039字 / 15画像
この記事のみ ¥ 100

この記事が気に入ったらサポートをしてみませんか?