見出し画像

Outlook今日の予定を取得してメール送信するフローの作り方

Outlookの予定を取得し、メールで今日の予定を通知することで、1日のスケジュールを簡単に把握することができます。

他の人に自分の予定を知らせたい方や、朝の決まった時間にメールでスケジュールを確認したい方にとって、非常に便利なフローです。このフローを活用することで、効率的なスケジュール管理が可能になります。


1.作成ポイント

Outlookの予定表で今日の予定を取得するパターンは、3つあります。

当日に終わる予定

他の日には、またがない

終日

予定表の上部に終日は表示される

日をまたぐ予定(時間)

予定表の上部に表示されるが、時間の予定にも表示される


作り方のポイントは、フィルタークエリです。
イベントの取得(V4)にあるフィルタークエリをつかって、上記の予定を取得します。

動画では、当日に終わる予定について説明します。
※終日、日をまたぐ予定(時間)含めると動画が長時間になり分かりづらくなるため、当日に終わる予定について理解したら、作ってみてください。
※終日、日をまたぐ予定(時間)の説明は有料になります。


2.フロー作成

では早速フローを作成しましょう。トリガーは、「スケジュール済みクラウドフロー」を使って予定があれば、8時に送信するフローにします。

①Power Automateを開き、左上にある「+作成」→「スケジュール済みクラウドフロー」をクリックします。

②フロー名に『今日の予定をメール送信』と入力し、繰り返しの間隔「1日」に設定したら「作成」をクリックします。

次にトリガーの設定をします。
③タイムゾーン「(UTC+09:00)大阪、札幌、東京」、時間を「8」分『0』に設定します。プレビューで設定時刻が、「8:00毎日に実行」になっていることを確認してください。

次に予定表を取得します。
④トリガーの「Recurrence」の下の「+」→「アクションの追加」をクリックし、「Office 365 Outlook」をクリックします。

⑤「イベントの取得(V4)」をクリックします。

⑥予定表IDに「予定表」を選択し、詳細パラメーターから「フィルタークエリ」「並べ替え順」をチェックし、表示させます。

⑦フィルタークエリに下記を追加します。

(start/datetime ge '@{convertFromUtc(addDays(utcNow(), -1), 'Tokyo Standard Time', 'yyyy-MM-ddT15:00:00')}' and end/datetime lt '@{convertFromUtc(utcNow(), 'Tokyo Standard Time', 'yyyy-MM-ddT15:00:00')}') and isAllDay eq false

⑧並べ替え順に下記を追加します。

start/datetime asc

⑨アクション名は、『今日の予定を取得』に変更してください。


簡単にフィルタークエリを説明すると、イベントを取得したJSONが下記のようになっているとします。startとendが協定世界時になっているので、その時間に合わせて今日の予定をフィルターしています。

フィルターで終日ではない今日の予定を絞り込んだら、データ操作の選択のアクションを使って、必要な列と値を整理します。

⑩「+」→「アクションの追加」をクリックし、ランタイムの「組み込み」にある「Data Operation」の「選択」のアクションを追加します。

⑪Formに「今日の予定を取得」の「body/value」を追加します。次に「T」のマークをクリックします。

⑫Mapに下記を追加します。
※アクション名は、『今日の予定を選択』に変更してください。

{
  "予定": @{item()?['subject']},
  "開始時刻": @{convertTimeZone(item()?['start'], 'UTC', 'Tokyo Standard Time', 'HH:mm')},
  "終了時刻": @{convertTimeZone(item()?['end'], 'UTC', 'Tokyo Standard Time', 'HH:mm')},
  "場所": @{item()?['location']},
  "終日": ""
}

次にHTMLテーブルを作成します。
⑬「+」→「アクションの追加」をクリックし、ランタイムの「組み込み」にある「Data Operation」の「HTMLテーブルの作成」のアクションを追加します。Fromに「今日の予定を選択」の「Output」を追加します。

次に条件で予定があればメール通知するようにします。
⑭「+」→「アクションの追加」をクリックし、「Control」の「条件」のアクションを追加します。左側の「値の選択」に下記を追加します。右側の「値の選択」に『1』を入力します。真ん中は、「is greater or equal to」を選択してください。

@{length(body('今日の予定を選択'))}

最後にメールのアクションを追加します。
YouTubeではメッセージを曜日によって変える説明をしています。
⑮Trueの中の「+」→「アクションの追加」をクリックし、「Office 365 Outlook」の「メールの送信(V2)」のアクションを追加します。宛先に自分の名前もしくは、メールアドレスを追加します。件名と本文は、下記を追加してください。
※本文は必ず「<>」をクリックして、コードビューにしてください。

今日@{formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'M月d日')
}(@{createArray('日', '月', '火', '水', '木', '金', '土')?[dayofweek(convertFromUtc(utcNow(), 'Tokyo Standard Time', 'yyyy-MM-dd'))]})の予定
おはようございます。<br>
@{formatDateTime(convertFromUtc(utcNow(), 'Tokyo Standard Time'), 'M月d日')
}(@{createArray('日', '月', '火', '水', '木', '金', '土')?[dayofweek(convertFromUtc(utcNow(), 'Tokyo Standard Time', 'yyyy-MM-dd'))]}) 今日の予定です。<br>
<br>
<style>
table {
  border-collapse: collapse;
  width: 100%;
  margin: 10px 0;
  font-family: Arial, sans-serif;
  background-color: #f9f9f9;
  border-radius: 5px;
  box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

table th {
  border: solid 1px #ddd;
  background-color: #4CAF50;
  color: white;
  padding: 12px;
  font-size: 16px;
  text-align: center;
}

table td {
  border: solid 1px #ddd;
  padding: 12px;
  font-size: 14px;
  color: #333;
  text-align: center;
}

table tr:nth-child(even) {
  background-color: #f2f2f2;
}

table tr:hover {
  background-color: #e9e9e9;
}

table th, table td {
  white-space: normal;
  word-wrap: break-word;
}
</style>
@{body('HTML_テーブルの作成')}

※CSSを使ってテーブルのデザインをしました。

⑯「保存」をクリックします。

⑰「テスト」→「手動」→「テスト」→「フローの実行」でテストをしてください。終日以外の予定が無ければメールは届きません。


次に終日の予定を取得して、配列を結合してHTMLテーブルにしていきます。ここからは有料になりますが、終日の予定や複数期間の予定をよく使う方は、ご購入ください。
※終日以外の複数期間 10-02 09:00〜10-05 09:00のような予定についても説明します。

ここから先は

4,637字 / 23画像
この記事のみ ¥ 100

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