はじめに
皆さんの会社にはいませんか?
- 会議中ずっと黙っていたのに終盤になって独自の主張を話し始めて会議を長引かせるおじさん。
- 会議終了時間を過ぎてもしゃべりつづけるおじさん
- 自分の主張が通るまでリピートし続けるおじさん
- etc...
そんなおじさん対策になるかは分かりませんが、会議終了時間までしつこくリマインドするフローを作ってみました。
このフローの目的
Teams会議中に会議チャットにしつこく終了時間をリマインドします。
- イベント開始時間
- イベント終了時間の30分前
- イベント終了時間の15分前
- イベント終了時間の10分前
- イベント終了時間の5分前
- イベント終了時間の1分前
- イベント終了時間
使い方
会議開催の15分前までに、Outlookの予定表でこのフローを動作させたい会議イベントの分類を"オレンジの分類"に変更します。この操作が必要なので、クラウドフローの所有者が会議に招待されている必要があります。会議に出席しなくてもフローは動作します。
動作イメージ
会議チャットにこんな感じで自動で投稿されます。
フロー全体
フロー解説
トリガー 「予定しているイベントがまもなく開始されるとき(V3)」
「…」→⚙設定→トリガーの起動条件を設定しています。イベントの分類(categories)に'オレンジの分類'が指定された場合のみトリガーが起動します。このフローのキモです。これができることで任意の会議イベントのみでこのフローを動かす事が実現できています。
変数を初期化する-通知タイミング
会議中の通知タイミングを定義する変数です。画像の設定で、会議終了時間の30,15,10,5,3,1分前に通知されます。もっと多くのタイミングで通知する事も可能です。実際の会議時間を超えた設定でも問題ありません。
会議チャットidの取得
Exchange Online 予定表のイベントIDを使って会議のチャットIDを取得しています。
この部分については、以前投稿したこちらのページをご覧ください。
スコープ-会議開始コール
会議開始時間まで待って、会議チャットにメッセージを投稿しています。
- 延期期限-開始時刻まで待つ
- formatDateTime(
triggerOutputs()?['body/start'],
'yyyy-MM-ddTHH:mm:ssZ'
) - イベントの日付は「"2023-06-23T12:30:00+00:00"」という形式になっています。このままではPowerAutomateのアクションでは扱えない為、FormatDateTime関数で変換しています。
- formatDateTime(
- チャットまたはチャネルでメッセージを投稿する
- 開始日時
-
convertFromUtc(formatDateTime(triggerOutputs()?['body/start'],
'yyyy-MM-ddTHH:mm:ssZ'), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm')
-
- 終了日時
- convertFromUtc(formatDateTime(triggerOutputs()?['body/end'],
'yyyy-MM-ddTHH:mm:ssZ'), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm')
- convertFromUtc(formatDateTime(triggerOutputs()?['body/end'],
- 開始日時
Apply to each-通知タイミングで繰り返す
通知タイミングアレイで定義したタイミングでメッセージを投稿します。
何分経過した・何分かを計算して把握するのが面倒だったので、会議終了時間のx分前まで待機して通知メッセージを投稿を繰り返しています。
ポイントとしては、通知する日時が未来の時刻かを判断しています。こうすることで、通知タイミング変数で定義したタイミングよりも短い会議だった場合でも、余分な投稿をしないようにしています。(例えば20分間の会議であれば、通知タイミング変数に定義した終了30分前は会議開始時点で過ぎているので通知しない)
- 作成-通知タイミング日時
-
addMinutes(
formatDateTime(triggerOutputs()?['body/end'],
'yyyy-MM-ddTHH:mm:ssZ'
),
mul(
items('Apply_to_each-通知タイミングで繰り返す'),-1
)
)
-
- 作成-現在日時との差
- dateDifference(
utcNow(),
outputs('作成-通知タイミング日時')
)
- dateDifference(
- 条件-未来の場合のみ
- substring(
outputs('作成-現在時刻との差'),
0,
1
) - 通知タイミング過去の場合dateDifferenceはマイナスの値を返します。先頭1文字が'-'かどうかで判断しています。
- substring(
スコープ-会議終了コール
会議終了時間まで待って、会議チャットにメッセージを投稿しています。
- 延期期限-終了時刻まで待つ
- formatDateTime(
triggerOutputs()?['body/end'],
'yyyy-MM-ddTHH:mm:ssZ'
) - イベントの日付は「"2023-06-23T12:30:00+00:00"」という形式になっています。このままではPowerAutomateのアクションでは扱えない為、FormatDateTime関数で変換しています。
- formatDateTime(
- チャットまたはチャネルでメッセージを投稿する-イベント終了
- 開始日時
-
convertFromUtc(formatDateTime(triggerOutputs()?['body/start'],
'yyyy-MM-ddTHH:mm:ssZ'), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm')
-
- 終了日時
- convertFromUtc(formatDateTime(triggerOutputs()?['body/end'],
'yyyy-MM-ddTHH:mm:ssZ'), 'Tokyo Standard Time', 'yyyy-MM-dd HH:mm')
- convertFromUtc(formatDateTime(triggerOutputs()?['body/end'],
- 開始日時
改善したいこと
会議途中からでもリマインドを行いたい
「予定しているイベントがまもなく開始されるとき(V3)」トリガーで起動している関係上、会議前にイベントの分類を忘れてしまうとあとからこのフローを適用するのが面倒です。
通知メッセージに残り時間を円グラフなどで可視化して通知したい
経過時間などを計算しなくてはならず...面倒なので今回は見送りました。
会議チャットを使わない文化の会社では...
会議チャットを使わない文化の組織(弊社)では、会議チャットでリマインドしても効果は薄いかもしれません。何か良い通知手段がないか...
メンションをつける…のはデメリットが大きい
会議参加者全員にメンションをつけてリマインドすることも可能です。可能ですが問題があります。「会議出席者のアクティビティフィードがリマインド通知で埋まる」という問題があります。今回のフローでは実際の会議参加者までは取得できていませんので、あくまで会議イベントの参加(予定者)にメンションするしか術がありません。この為、実際には会議に参加していない参加者のフィードもリマインドで埋まることになります。メンションは得策ではなさそうなので、他に気づかせる手段がないか検討中です。
さいごに
とりあえず作ったものの、まだこのフローは運用は出来ていません。今後の運用結果を踏まえて改善できればと思います。
それはともかく、予定された会議時間内に終わるように時間配分を意識して功利的に会議を進めたいものですね
参考にしたページ
やまさんのこちらアイデアで、任意の会議でのみこのフローを実行する事ができるようになりかなり実用的になりました。
大感謝です。