

システム連携ネタでよくブログを書いている日下です。
あるお客様より Microsoft365 / Office365 の Outlook 予定表(カレンダ)との連携について相談をいただきました。以下、その連携の設定方法についてまとめます。
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 参照 / ユーザー / カレンダー / 予定表を作成する」