目次
Microsoft Teamsの特定チャネルのいいねをした人ランキングを作成しよう!その3~Microsoft Flowを使ってTeamsメッセージを取得しよう~
その2からの続きです。
今回はMicrosoft Flowを利用してその2で確認したAPIを実行させメッセージを取得します
Microsoft Flowの画面へ行きます
- [マイフロー] → [新規]→【自動-空白から作成】をクリックします
- フロー名に適当な名前を入力し、【スキップ】をクリックします
- 今回は手動でFlowを実行させるので検索窓に「手動」と入力し、【手動でフローをトリガーします】をクリックします
- 【入力の追加】をクリックし、【はい/いいえ】をクリックします
- 【新しいステップ】をクリックします
- 検索欄に「HTTP」と入力し、【HTTP】をクリックします
(HTTPコネクタ利用には、Microsoft Flow Plan 1以上が必要になります)
- URIに前回の記事でメッセージを取得テストをした際のURLを入力します。方法は「GET」のままにしておきます
このままだとこれから先でわかりづくなるのでアクション名を変更しておきます。
右上にある…をクリックし、【名前の変更】をクリックしアクション名を変更します
ここでは「Teamsチャネルメッセージを取得する」としました
- 【詳細オプションを表示する】をクリックします
- 以下の項目を入力します
項目 値 認証 Active Directory OAuth 機関 規定値のままにしておきます テナント その1で作成したアプリ概要欄にあるテナントID 対象ユーザ https://graph.microsoft.com クライアントID その1で作成したアプリ概要欄にあるID 資格情報の種類 シークレット シークレット その1で控えたシークレットキー - 右上の・・・をクリックし、【設定】をクリックします
- 改ページをONに、しきい値にとりあえず50といれて【完了】をクリックします
- 【新しいステップ】をクリックします
- 検索欄に変数と入力し、【変数の値を増やす】をクリックします
- とりあえずこんな感じに定義しておきます
(この変数この記事を書きながらなんで定義したんだろ?ってなってますが、今回の確認用です)
- 【新しいステップ】をクリックします
- 検索窓にJSONと入力し、【JSONの解析】をクリックします
- コンテンツには、「Teamsチャネルメッセージを取得する」の本文を設定します
スキーマーには下記のとおり入力しておきます{ "type": "object", "properties": { "@@odata.context": { "type": "string" }, "@@odata.count": {}, "@@odata.nextLink": { "type": "string" }, "value": { "type": "array", "items": { "type": "object", "properties": { "id": {}, "replyToId": {}, "etag": { "type": "string" }, "messageType": { "type": "string" }, "createdDateTime": { "type": "string" }, "lastModifiedDateTime": {}, "deletedDateTime": {}, "subject": { "type": [ "string", "null" ] }, "summary": {}, "importance": { "type": "string" }, "locale": { "type": "string" }, "webUrl": { "type": "string" }, "policyViolation": {}, "from": { "type": [ "object", "null" ], "properties": { "application": {}, "device": {}, "conversation": {}, "user": { "type": [ "object", "null" ], "properties": { "id": { "type": "string" }, "displayName": { "type": "string" }, "userIdentityType": { "type": "string" } } } } }, "body": { "type": [ "object", "null" ], "properties": { "contentType": { "type": "string" }, "content": { "type": [ "string", "null" ] } } }, "attachments": { "type": "array" }, "mentions": { "type": "array" }, "reactions": { "type": "array", "items": { "type": "object", "properties": { "reactionType": { "type": "string" }, "createdDateTime": { "type": "string" }, "user": { "type": "object", "properties": { "application": {}, "device": {}, "conversation": {}, "user": { "type": "object", "properties": { "id": { "type": "string" }, "displayName": {}, "userIdentityType": { "type": "string" } } } } } }, "required": [ "reactionType", "createdDateTime", "user" ] } } }, "required": [ "id", "replyToId", "etag", "messageType", "createdDateTime", "lastModifiedDateTime", "deletedDateTime", "subject", "summary", "importance", "locale", "webUrl", "policyViolation", "from", "body", "attachments", "mentions", "reactions" ] } } } }
- 【新しいステップ】をクリックします
- 制御から【Apply to each】をクリックします
- 「以前の手順から出力を選択」欄には、JSONの解析からvalueを選択します
- 【アクションの追加】をクリックします
- [制御] → 【条件】をクリックします
- 値の選択欄に、「reactionType」を選択します
- reactionTypeはreactionsの配列内にあるので自動的にApply to eachが追加された状態になります
- 【条件】をクリックします
- 条件式に「like」と入力します
- 「はい」の下にある【アクションの追加】をクリックします
- 【変数の値を増やす】をクリックします
- 名前は事前に定義した変数名が選択できるので、likeCntを選択します
値には1と入力します
- 【アクションの追加】をクリックします
- 今回は手っ取り早くカウントされた数を確認したいので、【Send me an email notification】をクリックします
- 「Subject」には適当な件名をいれておきます
Bodyに変数のlikeCntを選択します
- フローを保存します
作成したフローを実行してみよう
- 右上の【テスト】をクリックします
- 「トリガーアクションを実行する」を選択し、【保存&テスト】をクリックします
- はい/いいえのボタンを有効にし【フローの実行】をクリックします
- 【完了】をクリックします
- 実行結果が表示されていきます
- フローを実行したユーザのメールアドレスにメールがきているかを確認します
- いいねされている数の総数が表示されていれば成功です!!
ただこの状態だとスレッドの大本にいいねされた数しかとることができません。
ここだけ↓
下の2つの返信のいいねの数を数えることができません。
そのためスレッドに対する返信を取得しカウントする方法を次回やりたいと思います。