概要
別の記事でServiceNowとBoxの連携について書きましたが、認証のテストまでしかありませんでしたので、今回は実際のBox上の操作(フォルダ作成)の実装方法を紹介します。
準備
本記事では、Boxカスタムアプリ、ServiceNowのアプリケーションレジストリとRESTメッセージが作成・設定されたことを仮定します。それらの設定について、「BoxとServiceNow連携:認証方法」を参考してください。
実装
今回の実装ステップとして、まずはBoxフォルダ作成用の新規なHTTPメソッドを実装します。その後に、動作確認を行います。
「フォルダ作成」のHTTPメソッドを追加
Box上のフォルダ作成は次のAPIエンドポイントへのリクエストで実施できます:https://api.box.com/2.0/folders
(ガイド)。
パラメータとして、フォルダ名と親フォルダIDを設定する必要があります。両方はリクエストの本文で指定します:
- フォルダ名(
name
)は任意ですが、使えない文字があります - 親フォルダID(
parent.id
)はBoxのWebアプリのURLから取得できます。例えば、https://app.box.com/folder/123456789
の場合は、123456789
はフォルダIDです。ユーザーのルートフォルダ(「すべてのファイル」のページ)のIDは0
です。Box APIでもフォルダIDを取得することが可能ですが、この記事ではフォルダIDを事前に取得ことを仮定します
上記のエンドポイントへリクエストを送信するために、事前に作成されたRESTメッセージで新規なHTTPメソッドを追加します。新規HTTPメソッド画面で以下のように設定します(詳細設定はBox APIガイドで確認だきます):
- 名前:<任意の名前>(例:Boxフォルダ作成)
- HTTP メソッド:POST
- REST エンドポイント:https://api.box.com/2.0/folders
- 「HTTP要求」タブの「コンテンツ」の内容は以下のJSONです。JSONでは
folder_name
とparent_folder_id
を変数として指定しました
{
"name": "${folder_name}",
"parent": {
"id": "${parent_folder_id}"
}
}
レコードを保存すると、画面の下に「REST メッセージ関数パラメーター」タブが表示されます。「関連リンク」の「変数の自動生成」をクリックすると、JSONで指定した変数がパラメーターとして設定されます。
動作確認
テストのため、変数の「値」列も設定します。以上の画像でID228438198016
のフォルダの配下にテスト
というフォルダを作成するように設定しました。
フォルダを作成するため、リクエストを送信するユーザーは親フォルダに対して適切な権限が必要です(例えば、編集権限)。サーバ認証を使う際に、サービスアカウントを対象フォルダに招待する必要があります。
「関連リンク」の「テスト」をクリックすると、設定されたメソッドでBox APIへリクエストが送信されます。結果として、Box上のフォルダが作成さます。作成者はリクエストを送信したユーザーです(以下の画像で、「ServiceNow CCG」です)。
リクエストのレスポンスも「テスト実行」画面で確認できます。「HTTP ステータス」は201
ですので、リクエストは成功したことをわかります。
リクエストのレスポンスから作成されたフォルダID(id
項目)があり、それをレスポンスから抽出すると、引き続きの処理(例えば、コラボレーション作成)で使えます。
まとめ
この記事では、ServiceNowからBox上のフォルダ作成方法について説明しました。
フォルダ作成はよくある操作ですので、様々な場面で使えると思います。作成したHTTPメソッドをクビジネスルールやワークフローで使えますので、多くのケースで活用できます。
また、似たような実装仕方で、他のBox上の操作(例えば、ユーザー作成やグループ作成など)も実現できます。