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

あるお客様からのご相談で、OneDrive へ API 経由でファイル出力できるかについて検証し、実現できることを確認しました。
以下、その連携の設定方法についてまとめます。

目次
1: OneDrive と Questetra の連携検討の背景
2: OneDrive と Questetra を連携するための設定
 2.1: OneDrive(Office365) 側の OAuth 設定
 2.2: Questetra 側の OAuth 設定
 2.3: Questetra から OneDrive API を呼び出す設定
3: まとめ

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

Questetra からオンラインストレージへの出力として、まず Google ドライブへの出力は標準機能で搭載しています。また、Box や Dropbox への出力についてはアドオン xml(インポートできる部品)を公開しています。OneDrive についてはまだなかったため、検証を行いました。
※関連マニュアル:M229: 業務ファイルがGoogleドライブにも自動保存されるように設定する
※関連アドオン xml:Box アップロード
※関連アドオン xml:Dropbox アップロード

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

OneDrive に限らず、Office365 との連携については、以前にまとめた記事があります。
※関連記事:Office365 とクラウド型ワークフローとの連携方法について
この記事に書いた通り、認証については AzureAD v2.0 endpoint で Authorization Code を使う場合、Questetra 側は OAuth2 の設定のみで対応できます。この方法が使えない場合にはいろいろとめんどうなのですが、今回は大丈夫でした。

OAuth2 の設定詳細は以下の記事を参考にしてください。ここでは OneDrive との連携特有の内容にしぼって記載します。
※関連記事:Questetra から他サービスの REST API を呼び出す場合の設定(Questetra が OAuth2 クライアントになる場合)

2.1: OneDrive(Office365) 側の OAuth 設定

(2019/10/31加筆)Office365 側のアプリケーション登録方法が変わっています。以下の記事をご覧ください。
Office365 とクラウドワークフロー Questetra を API 連携させたい場合に(Office365 でのアプリケーション登録手順)

「マイアプリケーション」の一覧からアプリの追加を行います。

  • 「Appliction Name」は何でもOK
  • 「Guided Setup」は無視して、「Create」を押下
  • 表示された「アプリケーションID」をメモ
  • 「アプリケーションシークレット」で「新しいパスワードを生成」して「パスワード」をメモ
  • 「プラットフォーム」で「プラットフォームの追加」して「Web」を選択し、「リダイレクトURL」に Questetra のコールバック URL を設定
  • 「Microsoft Graph のアクセス許可」の「委任されたアクセス許可」に Files.ReadWrite を追加して、画面下部の「保存」を押下

※ここでは他にもいろいろ設定できるようで、他サービスと比べて OAuth のアプリケーション登録画面としてはややこしめですね。

※参考記事:Registering your app for Microsoft Graph
※参考記事:Microsoft Graph のアクセス許可リファレンス

2.2: Questetra 側の OAuth 設定

以下の情報を設定して、トークンを取得します。

  • 「認可エンドポイントURL」:https://login.microsoftonline.com/questetrainc.onmicrosoft.com/oauth2/v2.0/authorize
  • 「トークンエンドポイントURL」:https://login.microsoftonline.com/questetrainc.onmicrosoft.com/oauth2/v2.0/token
  • 「スコープ」:https://graph.microsoft.com/Files.ReadWrite offline_access
  • 「クライアントID」、「クライアントシークレット」:2.1 のアプリ追加で取得した「アプリケーション ID」、「アプリケーションシークレット」を入力

2.3: Questetra から OneDrive API を呼び出す設定

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

  • 「通信設定」
    • 「アクセスURL」: https://graph.microsoft.com/v1.0/me/drive/items/{フォルダID}:/{ファイル名}:/content
      • フォルダID は「root」と指定すると認証ユーザのデフォルトフォルダ配下に出力される
      • 実際の設定を想定すると、変動すると考えられるため フォルダID や ファイル名 はデータ項目を埋め込む形にする方がよい
    • 「HTTP Method」:「PUT(リクエストボディを指定)」
    • 「エラー発生時にエラー内容を格納する文字型データ項目」:必須ではないが、指定しておくとエラー詳細が確認できるのでベター。またこのイベントの後ろでこのデータ項目を見てエラー有無を判定して、エラー時の処理を入れておくのがさらにベター
  • 「セキュリティ/カスタムヘッダ」:「OAuth2.0 で接続する」を選択し、「OAuth 設定名」に 2.2 で設定した名称を指定
  • 「リクエストボディ」:「リクエストボディとして送信するデータ項目」に OneDrive へ送付するファイル型データ項目を指定
  • 「レスポンス」:必須ではないが、「レスポンスを保存する」にチェックをつけ、文字型データ項目を指定しておくと結果が確認できるのでベター

※参考記事:Upload or replace the contents of a DriveItem

※現状(Ver.12.1.1 時点)の仕様では、スクリプト処理の場合の HTTP ヘッダの文字数制限が1000文字から緩和されています(「メッセージ送信中間イベント(HTTP)」にはその制限がありません)。Microsoft のトークンは多くのケースで1000文字を超えますが、現状では本処理をアドオン XML 化できます。
※現状(Ver.11.9.0 時点)の仕様では、スクリプト処理の場合には HTTP ヘッダの文字数は1000文字まで、という制限があります(「メッセージ送信中間イベント(HTTP)」にはその制限がありません)。一方、Microsoft のトークンは多くのケースで1000文字を超えます。そのため、現状では本処理をアドオン XML にすることはできません。

3: まとめ

アドオン xml(インポートできる部品)の準備まではできないのですが、設定だけで OneDrive へのファイル出力連携ができることがおわかりいただけたかと思います。

もし、ご質問等がありましたら、お問い合わせフォームからお気軽にご連絡ください。

「OneDrive へクラウドワークフロー Questetra からファイル出力する方法」への3件のフィードバック

  1. ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra

  2. ピンバック: クラウド BPM ワークフローの他システム連携事例集(2019年6月版) - Questetra

  3. ピンバック: Excel Online へクラウドワークフロー Questetra からデータ出力する方法(API 連携の設定手順) – Questetra Support

コメントは受け付けていません。

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