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

あるお客様より Microsoft365 / Office365 の Outlook 予定表(カレンダ)との連携について相談をいただきました。以下、その連携の設定方法についてまとめます。

目次
1: Outlook と Questetra の連携検討の背景
2: Outlook と Questetra を連携するための設定
 2.1: Outlook(Microsoft 365 / Office 365) 側の OAuth 設定
 2.2: Questetra 側の OAuth 設定
3: Questetra から Outlook の API を呼び出す設定
4: まとめ

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

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

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

まず、この記事では前者のケースについて実現方法の詳細を説明します。

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

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

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

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

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

2.2: Questetra 側の OAuth 設定

次の記事の「2.2: Questetra 側の OAuth 設定」と同じです。記事を参考にして設定してください。
「スコープ」は「https://graph.microsoft.com/calendars.readwrite offline_access」としてください。
 「OneDrive へクラウドワークフロー Questetra からファイル出力する方法」

3: Questetra から Outlook の API を呼び出す設定

決まった書式の JSON を所定の URL に送付するのみですので非常にシンプルです。

以下のような JSON データを POST することで、予定(イベント)が登録されます。JSONを準備する方法としては、「データ更新」か「スクリプトタスク」を使います。
※関連マニュアル:「M227: 業務データの結合や四則演算が自動実行されるように設定する」
         「M230: 業務データの複雑なデータ加工が自動実行されるように設定する(ECMAスクリプト)」
※次の記事も参考になります。
 「ビジネスチャット Microsoft Teams へワークフローから投稿する」の「3.2: Questetra 側の設定(アドオンを使わない場合)」
※JSON フォーマット詳細はこちらを参照ください。
 「Microsoft Graph / v1.0 参照 / 予定表 / イベント / event リソースの種類」

{
  "subject": "(予定の名称)",
  "body": {
    "contentType": "HTML",
    "content": "(予定の説明)"
  },
  "start": {
      "dateTime": "2020-08-31T10:00:00",
      "timeZone": "Tokyo Standard Time"
  },
  "end": {
      "dateTime": "2020-08-31T11:00:00",
      "timeZone": "Tokyo Standard Time"
  },
  "location":{
      "displayName":"(実施場所)"
  },
  "attendees": [
    {
      "emailAddress": {
        "address":"test@example.com",
        "name": "Tsuyoshi Kusaka"
      },
      "type": "required"
    }
  ]
}

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

  • 通信設定
    • HTTP Method:「POST(リクエストボディを指定)」
    • リクエストボディとして送信するデータ項目:送付する JSON データを格納した文字型データ項目
    • リクエストボディのContent-Type:application/json
    • レスポンスを保存するデータ項目:必須ではないが、文字型データ項目を指定しておいて結果を確認するのがベター
    • エラー内容を保存するデータ項目:必須ではないが、指定しておくとエラー詳細が確認できるのでベター。またこのイベントの後ろに、このデータ項目を参照してエラー有無を判定して分岐するエラー時の処理を入れておくのがさらにベター
  • ヘッダ
    • Authorizationヘッダ:「OAuth2.0」を選択
    • OAuth2設定:2.2 で設定した名称を指定

正しく追加されているかどうかは、Teamsの予定表で確認できます。

データ連携用の部品(アドオンXML)として準備することも容易にできそうです。それはまた別の記事でまとめようと思います。

4: まとめ

Microsoft 365 / Office 365 の API にはこれまでいろいろと苦戦しているのですが、これまでのノウハウもあって、今回は意外にカンタンに実現できました。

次の記事ではもう1つのパターンである
 ・カレンダに登録された予定に連動して業務フロー(プロセス)を起動する
について説明します。

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

※参考ドキュメント
「Microsoft Graph / v1.0 参照 / ユーザー / カレンダー / 予定表を作成する」

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