SharePointリストからTeamsに画像投稿する自動化(Power Automateクラウド)
SharePointリストの画像の列を使って、Teamsのチャネルに画像を投稿する自動化を作ってみました。
※Power AppsのデータソースをSharePointリストにした時にも活用できます。
チームメンションができるフローも公開しました。
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関数を組み合わせて抽出します。
この記事が気に入ったらサポートをしてみませんか?