Teams予約投稿(同時メンション) 〜Teamsに無い機能を作れます〜
Teams予約投稿を使うとき
Teamsに予約投稿できたら忘れなかったのに、そう思ったことありませんか?
Outlookには、指定日時で送信予約できる「スケジュール送信」がありますが、Teamsにはありません。
※2024/5/7現在、チャットにのみ7日以内で投稿する機能あり
Teamsで予約投稿したいときは、3つです。
例えば、下記のようなことです。
予約投稿のキャンセルができてHTMLテキストでチーム投稿したい方は、下記記事もご一読ください。
Teams予約投稿のやり方
予約投稿は、チャット、グループチャット、チーム(チャネル)に予約投稿できます。
予約投稿の方法は、Teamsの作成ボックスから、フローを実行、カードに投稿日時、本文を入力して、「投稿」を押すだけです。
チャット、チャネルにメッセージを投稿するときに必要なのが通知(メンション)です。
同時メンションなので、チーム、チャネル、タグ、個人メンションを1つの投稿に行うことができます。
チャット、グループチャットにもメッセージ送信できます(メンションは個人メンションのみ)。
次のフロー作成手順から有料になります。無料で作成されたい方は、YouTubeとBlogに同時メンションできないフローを公開しているので、そちらを参考にしてください。動画公開は、2022/10/10です。
※有料はフローのダウンロードファイルがあります(記事の最後の方)。
Teams予約投稿の作り方
Teams予約投稿は、Power Automateを使って作成します。
まずはTeamsにWorkflowsのアプリを追加してください。
TeamsにWorkflowsを追加
①Teamsを開き、左側にある三点リーダー「・・・」から「その他のアプリ」をクリックします。
②左上のアプリの検索に『Workflows』と入力すると、アプリの「Workflows」が表示されるのでクリックします。
③「追加」をクリックします。
④Workflowsが追加されたら、「了解しました」をクリックします。
⑤チャット、チャネルの作成ボックスの三点リーダー「・・・」から「Workflows」が表示されることを確認して、クリックします。
⑥フローを作成していないので、ここにフローはありませんが、これから作成する「Teams予約投稿」がここに表示されます。
1.Power Automateでフローを作成(トリガーまで)
①Power Automateのアプリを開き、「+作成」→「インスタントクラウドフロー」をクリックします。
※仕様変更があり、テナントによって表示が違う場合があります。
②フロー名に『Teams予約投稿』を入力し、「作成ボックスから(V2)」を選択、「作成」をクリックします。
※仕様変更があり、テナントによって表示が違う場合があります。トリガーの「作成ボックスから」を選んで、次のアクションは選ばずに「独自のフローの構築にスキップする」をクリックすると③になります。
③「アダプティブカードの作成」をクリックします。
④左下にある「CARD PAYLOAD EDITOR」の「+」をクリックします。
⑤下にスクロールして、JSONが表示させ⑥のJSONを貼り付けします。
⑥下記JSONを貼り付けます。
{
"$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
"type": "AdaptiveCard",
"version": "1.3",
"body": [
{
"type": "TextBlock",
"text": "▼日時とメッセージ",
"weight": "Bolder",
"size": "Medium",
"fontType": "Default",
"color": "Warning"
},
{
"type": "Input.Date",
"id": "scheduledDate",
"spacing": "None",
"isRequired": true,
"errorMessage": "日付を選択してください。",
"label": "日付"
},
{
"type": "Input.Time",
"id": "scheduledTime",
"spacing": "None",
"isRequired": true,
"errorMessage": "時間を選択してください。",
"label": "時間"
},
{
"type": "Input.Text",
"placeholder": "件名を入力してください(チャネルのみ)",
"id": "Subject",
"label": "件名"
},
{
"placeholder": "メッセージを入力してください",
"type": "Input.Text",
"spacing": "None",
"id": "messageToSend",
"isRequired": true,
"isMultiline": true,
"errorMessage": "メッセージを入力してください",
"label": "メッセージ"
},
{
"type": "Input.Text",
"placeholder": "URLを入力してください",
"id": "Url",
"label": "URL"
},
{
"type": "TextBlock",
"text": "▼メンション",
"wrap": true,
"weight": "Bolder",
"color": "Good",
"size": "Medium",
"fontType": "Default"
},
{
"type": "Input.ChoiceSet",
"choices.data": {
"type": "Data.Query",
"dataset": "graph.microsoft.com/users"
},
"id": "peopleToAtMention",
"isMultiSelect": true,
"label": "個人へ@メンション"
},
{
"type": "Input.Toggle",
"title": "チームへ@メンション",
"id": "TeamtoMention"
},
{
"type": "Input.Toggle",
"id": "ChanneltoMention",
"title": "チャネルへ@メンション"
},
{
"type": "Input.Text",
"placeholder": "タグ名を入力してください",
"id": "TagtoMention",
"label": "タグへ@メンション"
}
],
"actions": [
{
"type": "Action.Submit",
"title": "投稿"
}
]
}
⑦カードが変更されたら「カードの保存」をクリックします。
2.現在の日時以上を条件にする
トリガーの設定が終わったら、次は予約投稿の日時が、現在の日時以上かチェックします。
⑧「新しいステップ」→データ操作「作成」を追加します。入力に下記式を追加します。
※フロー名は、右側にある三点リーダー「・・・」→「名前の変更」から『フロー実行日時』に変更しました。
convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy-MM-dd HH:mm')
※環境によって次の条件が入力無しになることがあります。その場合は、下記に式を変更してください(Tを追加)。
convertFromUtc(utcNow(),'Tokyo Standard Time','yyyy-MM-ddTHH:mm')
⑨アクションが追加できたら「保存」をクリックします。そうするとPower Automateのフローボットから「フローが実行可能な状態になりました。」と通知がきます。
⑩「新しいステップ」→コントロール「条件」を追加します。左側の「値の選択」に下記式を追加、右側の「値の選択」にフロー実行日時の「出力」を追加します。真ん中は、「次の値以上」を選択します。
※フロー名は、『現在の日時以上かチェック』に変更しました。
concat(triggerBody()?['cardOutputs']?['scheduledDate'],' ',triggerBody()?['cardOutputs']?['scheduledTime'])
※環境によって次の条件が入力無しになることがあります。その場合は、下記に式を変更してください(Tを追加)。
concat(triggerBody()?['cardOutputs']?['scheduledDate'],'T',triggerBody()?['cardOutputs']?['scheduledTime'])
⑪「いいえの場合」の中の「アクションの追加」→コントロール「終了」を追加します。状態を「成功」にします。
3.変数を初期化する
チームメンション、チャネルメンション、タグメンション、個人メンションをするために6つの変数を初期化します。
⑫「新しいステップ」→変数「変数を初期化する」を追加します。名前に『userList』を入力、種類「文字列」を選択、値に「peopleToAtMention」を追加します。
※フロー名は、『userList変数を初期化する』に変更しました。
⑬「新しいステップ」→変数「変数を初期化する」を追加します。名前に『peopletomentionID』を入力、種類「アレイ」を選択、値に下記式を追加します。
※フロー名は、『peopletomentionID変数を初期化する』に変更しました。
split(variables('userList'),',')
⑭「新しいステップ」→変数「変数を初期化する」を追加します。名前に『mentionID』を入力、種類「文字列」を選択、値は空白にします。
※フロー名は、『mentionID変数を初期化する』に変更しました。
⑮「新しいステップ」→変数「変数を初期化する」を追加します。名前に『mentions』を入力、種類「アレイ」を選択、値は空白にします。
※フロー名は、『mentions変数を初期化する』に変更しました。
⑯「新しいステップ」→変数「変数を初期化する」を追加します。名前に『idx』を入力、種類「整数」を選択、値は『3』を入力します。
※フロー名は、『idx変数を初期化する』に変更しました。
⑰「新しいステップ」→変数「変数を初期化する」を追加します。名前に『userMentionString』を入力、種類「文字列」を選択、値は空白にします。
※フロー名は、『userMentionString変数を初期化する』に変更しました。
この記事が気に入ったらサポートをしてみませんか?