システム連携ネタでよくブログを書いている日下です。

あるお客様より Microsoft365 / Office365 の Outlook 予定表(カレンダ)との連携について相談をいただきました。前回の記事の続きで、今回は Microsoft Power Automate を利用する方法等も説明します。

目次
1: Outlook と Questetra の連携検討の背景
2: Outlook の 予定から Questetra の業務を開始する設定
 2.1: Microsoft Power Automate によるトリガ設定
 2.2: Outlook と Questetra を連携するための設定
  2.2.1: Outlook(Microsoft 365 / Office 365) 側の OAuth 設定
  2.2.2: Questetra 側の OAuth 設定
  2.2.3: Quetetra のタイマーによるトリガ設定
3: まとめ

1: Outlook と Questetra の連携検討の背景

Outlook 予定表に限らず、カレンダサービスとの連携でよくあるのは以下の2ケースです。

  • 業務フロー処理の途中でカレンダに予定を登録する
  • カレンダに登録された予定に連動して業務フロー(プロセス)を起動する

前回の記事は前者のケースについて記載しましたが、今回は後者のケースについて実現方法の詳細を説明します。

※関連記事:「Google カレンダー: 予定追加」 ※データ連携用の部品(アドオンXML)として準備されたもの
      「Google カレンダー上の予定からワークフローを開始する方法」

2: Outlook の 予定から Questetra の業務を開始する設定

今回はカレンダに登録された予定(イベント)の件名に特定の文字列が含まれる場合に、業務フロー(プロセス)を開始することにします。
 例:「Web打合せ:」という文字列が含まれていたら、打合せ報告の業務フローを自動開始する

処理のトリガとしては、Microsoft Power Automate を使う方法と、Questetra のタイマーを使う方法が想定されます。前者の方法は Outlook に登録された予定の直前に業務フロー開始します。一方、後者の方法は夜の0時過ぎに当日分についてまとめて業務フローを開始します。ということで、若干内容が異なります。
また、起動される側の業務フローとしては、HTTP リクエスト受信によって開始されるよう「メッセージ開始イベント(HTTP)」で受け口を準備しておきます。
※関連マニュアル: M221: 特定URIにHTTPリクエストがあった時に自動的に開始されるように設定する

あと、Power Automate を使う方法の場合、PREMIUM 契約でないと利用できない部品を使いますので、その点も留意してください。

2.1: Microsoft Power Automate によるトリガ設定

以下の図のように Outlook で登録された予定日時が近づいたら、件名に指定の文字列が含まれるかを判定して、Questetra の業務を起動するための HTTP リクエストを送付する、といった設定により実現できます。
※HTTP リクエストを送付する部品は Power Automate の PREMIUM 契約でないと利用できないようですので注意してください。

2.2: Outlook と Questetra を連携するための設定

Outlook に限らず Micotosoft 365/Office 365 との連携については、以前にまとめた記事があります。そちらを参考にしてください。
※関連記事:Office 365 とクラウド型ワークフローとの連携方法について
この記事に書いた通り、認証については AzureAD v2.0 endpoint で Authorization Code を使う場合、Questetra 側は OAuth2 の設定のみで対応できます。 今回もその方法で実現できました。

2.2.1: Outlook(Microsoft 365 / Office 365) 側の OAuth 設定

以下の記事を参考にして「クライアントID」、「クライアントシークレット」を取得してください。
 「Office 365 とクラウドワークフロー Questetra を API 連携させたい場合に(Office 365 でのアプリケーション登録手順)」

2.2.2: Questetra 側の OAuth 設定

以下の記事の「2.2: Questetra 側の OAuth 設定」と同じです。そちらを参考にして設定してください。
ただし、「スコープ」は「https://graph.microsoft.com/calendars.read offline_access」としてください。
※前回の記事では、予定の登録をするために readwrite が必要でしたが、今回は参照するだけのため read で大丈夫です。
 「OneDrive へクラウドワークフロー Questetra からファイル出力する方法」

2.2.3: Quetetra のタイマーによるトリガ設定

タイマーで夜の0時以降に日次で起動されるようにしておき、Outlook の API に HTTP リクエストを送付し、予定表のデータを取得。その結果をスクリプトで処理するワークフローアプリを準備します。
フロー図としては以下のようなイメージです。

API への HTTP リクエスト送付は 「メッセージ送信中間イベント(HTTP)」を使うことで実現できます。
※関連マニュアル:M225: 業務データを組み込んだHTTPリクエストが、自動的に送信されるように設定する

  • 通信設定
    • HTTP Method:「GET」
    • レスポンスを保存するデータ項目:文字型データ項目を指定する。ここに取得した JSON が格納されるので、それを「スクリプトタスク」で処理する
    • エラー内容を保存するデータ項目:必須ではないが、指定しておくとエラー詳細が確認できるのでベター。またこのイベントの後ろに、このデータ項目を参照してエラー有無を判定して分岐するエラー時の処理を入れておくのがさらにベター
  • ヘッダ
    • Authorizationヘッダ:「OAuth2.0」を選択
    • OAuth2設定:2.2 で設定した名称を指定
  • 送信パラメータ
    • startDateTime、endDateTime の2つを準備して、例えば 2020-09-15T00:00:00、2020-09-15T23:59:59 と対象範囲を指定するようにする。当日丸1日を指定するなら、文字型データの初期値が開始日から自動生成されるようにしておいて、それが入るように指定する。初期値の式としては以下で指定できる
       startDateTime は {#format(processInstanceStartDatetime, ‘yyyy-MM-dd’)}T00:00:00
       endDateTime は {#format(processInstanceStartDatetime, ‘yyyy-MM-dd’)}T23:59:59

API 実行結果として、以下のような JSON データを取得できます。JSON を処理する方法としては、「スクリプトタスク」を使います。
スクリプト処理の詳細は割愛しますが、件名に「Web打合せ:」が含まれている予定(イベント)があれば、それについて業務フロー(プロセス)を開始するよう設定すれば実現できます。件名はエンコードされていますので、その点を考慮してロジックを準備してください。
※関連マニュアル: M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)
※取得できる JSON フォーマット詳細はこちらを参照ください。
 「Microsoft Graph / v1.0 参照 / 予定表 / イベント / event リソースの種類」

{"@odata.context":(略)
 "value":
  [
    {"@odata.etag":(略)
     "subject":"Web・・・(エンコードされた状態)",
     (略)
     "start":{"dateTime":"2020-08-31T02:00:00.0000000","timeZone":"UTC"},
     "end":{"dateTime":"2020-08-31T03:00:00.0000000","timeZone":"UTC"},
     (略)
    },
    {(次のイベント分・・・)}
  ]
}

3: まとめ

前回の記事につづいて、Outlook の予定表との連携についてまとめました。
カレンダとの連携が実現できると、より業務の自動化が進められるかと思いますので、ご活用ください。

もし、ご質問等がありましたら、こちらかお気軽にお問合せください。

※参考ドキュメント
「Microsoft Graph / v1.0 参照 / ユーザー / カレンダー / イベントを一覧表示する」

%d人のブロガーが「いいね」をつけました。