Teamsのチャネルに投稿されたメッセージを、SPOのlistに保存するフローを作ります。
※とか言っても超初心者的な内容ですけど ( ´・∀・`)
作成物
今回のフローで必要なのは以下の通りです。
- Teamsチャネル
- SharePointリスト
- PowerAutomateクラウド
イメージ図は以下の通り
Teams
SPOリスト
リスト設定
リストは「作成」をしただけで、列の追加等は何も行っていません。
登録日時はリストの内部設定に自動で入っており、デフォルトでは非表示になっていますので、リストビューからチェックを入れて、表示させれば良いだけです。別に見えていなくても問題はなし。
フロー
詳細フロー
今回はTeamsに投稿されたタイミングで発動させたいため「自動化したクラウドフロー」を選択します
フロー名は自由につけてください。
トリガーは「チャネルに新しいメッセージが追加されたとき」を選択します。
選択肢が多い時は「Teams」や「チャネル」で絞り込むと楽です。
また、「チャットに新しいメッセージが追加されたとき」という紛らわしいものもありますので、選択を誤らないよう注意してください。
チャネルに新しいメッセージが追加されたとき
どこのチームの、どのチャネルに投稿されたタイミングで発動させたいのかを、ここで設定します。
項目の作成
どのリストに、どのように登録したいのかを設定します
サイトのアドレス | リストが属するサイトを選択します |
リスト名 | 保存したいリストを選択します |
タイトルから下は、作成したリスト項目(列の名前)が表示されます。今回はリストに「タイトル」しか作成していないため、表示されているのは「タイトル」だけです。
他にも列を作成している場合は、その数だけ表示されます。
動的な値
「タイトル」に動的なコンテンツ(値)を設定します。
「チャネルに新しいメッセージが追加されたとき」から「メッセージ本文コンテンツ」を当てはめれば完成です。
結果は以下に掲載しておりますのでご確認ください。
HTMLコードが不要(プレーンテキストのみが欲しい)の場合は次の項目で説明します。
メッセージ本文コンテンツ
プレーンテキストのみ保存する場合
HTMLコードを抜いて保存する場合のフローは以下の通りです。
先ほど作成したフローの中に「HTMLからテキスト(プレビュー)」を挟み込みます。
検索するときは「HTML」で検索すると絞り込まれます。
※「HTMLから」で絞込みするとヒットしません。
Htmlからテキスト
アクション「HTMLからテキスト」を入れ込んだ後は、ボックスの中に動的な値「メッセージ本文コンテンツ」を入れましょう。
最後に「項目の作成」に嵌めるものを「プレーンテキストコンテンツ」に差し替え、再びTeamsで投稿してください。右下の図のように、HTMLコードのないテキストが保存されたと思います。
留意事項
Teams投稿からリスト保存されるまで数分のタイムラグが生じます。
環境によるかもしれませんが、自分の環境では以下のようなズレ具合でした。
Teamsの投稿日時→
フローが走ってリスト保存された日時 ↓
タイムラグがあることを覚えておけば「リスト保存されてない!? フローも走ってない! なんで!?」と狼狽えることもないかと思います。
応用:登録が成功しても失敗しても返信でお知らせする
基本のフローを少し手直しして、ちゃんと登録されたのか、登録されなかったのか、どちらにしてもお知らせするフローにしたいと思います。
変更したフローは下記の通りです。
一番下の、左右に並列分岐させているところが今回の肝です。
運用のためリストの設定を変更しており基本フローとは若干異なります。
※「現在の時刻」は削っても問題ありません。
チャネル内のメッセージで応答します
まずは「項目の作成」の下に「チャネル内のメッセージで応答します」を追加しましょう。
同じフローの中であれば返信投稿も簡単に実装できちゃいます。
選択するアクションは「チャネル内のメッセージで応答します」です。
Teamsで絞り込むと簡単に追加できます。
この中の肝は「Message ID」です。
ここで登録したIDの投稿に返信が作成されます。
追加するのは「チャネルに新しいメッセージが追加されたとき」の中に入っている動的コンテンツです。
その中の「メッセージID」を選択して追加しましょう。
並列分岐
並列分岐を追加します。
「項目の作成」と「チャネル内のメッセージで応答します」の間に表示される「+」マークを押して、新しいステップを追加してください。
すると「並列分岐の追加」を選択できます。
左は成功したときの返信イメージ、右は失敗(未登録)したときの返信イメージです。
右側に追加したアクションの3点リーダー「・・・」をクリックして「実行条件の構成」を選択します。
デフォルトでは「に成功しました」のみチェックが入っていますので、それを外します。
それ以外の項目にすべてチェックを入れます。
これで、成功したもの以外がこちらのフローに流れてきます。
テスト
上記の応用で作成したフローを実際に作動させてみましょう。
登録していたリストのタイトルはデフォルトで「一行テキスト」の設定になっており、一行テキストは最大255文字までしか登録できません。
なので、左記のように255文字以上を登録してみると登録失敗になるはず。
投稿して少し時間を置くと・・・
登録失敗の返信がつきましたね。
では、PowerAutomateの実行履歴を見てみましょう。
はい、ちゃんと(?)失敗しております。
エラーの詳細を見てみましょう。
英語です。
大丈夫、ブラウザに翻訳して貰います o(・∀・`o)
種類 ‘OpenApiConnection’ のワークフロー操作 ‘項目の作成’ の ‘inputs.parameters’ が無効です。
エラーの詳細: API 操作 ‘PostItem’ では、プロパティ ‘item/Title’ を最大長 ‘255’ の文字列にする必要がありますが、長さは ‘456’ です。
ちゃんと「『項目の作成』のパラメーター値の文字数制限255文字だって言ってんのに456文字もあるから無効にしたよ」と言ってますね。すごい。
ということで、ちゃんと制限を守って再投稿。
上記までフローでは紹介してない返信ですが・・・
はい、ちゃんと成功したときも返信してくれましたね。
めでたしめでたし。