見出し画像

Teams予約投稿(同時メンション) 〜Teamsに無い機能を作れます〜

Teams予約投稿を使うとき


Teamsに予約投稿できたら忘れなかったのに、そう思ったことありませんか?

Outlookには、指定日時で送信予約できる「スケジュール送信」がありますが、Teamsにはありません。
※2024/5/7現在、チャットにのみ7日以内で投稿する機能あり

Teamsで予約投稿したいときは、3つです。

1.忘れないうちに投稿しておきたい(時間外に予約投稿)
2.仕事のアラートとして投稿(30日以内の予約投稿)
3.仕事しているフリ(仕事を少しサボりたい)

例えば、下記のようなことです。

1.夜の21時に投稿し忘れた業務連絡を予約投稿(時間外に予約投稿)
2.最終営業日にやる作業をグループチャットに予約送信する(30日以内の予約投稿)
3.テレワーク中に少し外出する

予約投稿のキャンセルができてHTMLテキストでチーム投稿したい方は、下記記事もご一読ください。


Teams予約投稿のやり方


予約投稿は、チャット、グループチャット、チーム(チャネル)に予約投稿できます。

予約投稿の方法は、Teamsの作成ボックスから、フローを実行、カードに投稿日時、本文を入力して、「投稿」を押すだけです。

作成ボックスの「・・・」→「Workflows」をクリック
※新しいTeamsでは、チーム投稿の「・・・」は、「+」になっています。
フロー名をクリック
カードが表示される

チャット、チャネルにメッセージを投稿するときに必要なのが通知(メンション)です。

同時メンションなので、チーム、チャネル、タグ、個人メンションを1つの投稿に行うことができます。

設定した日時に投稿

チャット、グループチャットにもメッセージ送信できます(メンションは個人メンションのみ)。

チャット、グループチャットにも対応
メンションは、個人メンションに対応

次のフロー作成手順から有料になります。無料で作成されたい方は、YouTubeとBlogに同時メンションできないフローを公開しているので、そちらを参考にしてください。動画公開は、2022/10/10です。
※有料はフローのダウンロードファイルがあります(記事の最後の方)。

2024/5/7現在、YouTube内で使っているOffice365 Groups「HTTP要求を送信します」のアクションは、Teams「Microsoft Graph HTTP 要求を送信する」で代替することができます。

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変数を初期化する』に変更しました。


ここから先は

8,098字 / 31画像 / 1ファイル

¥ 200

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