Japan
サイト内の現在位置を表示しています。
WebSAM JobCenterでBoxのいろいろな操作を自動化しよう
JobCenter Lab vol.33こんにちは。
WebSAM JobCenter ブログ担当です。
前回のブログでBox連携部品を紹介しました。今回もBoxとWebSAM JobCenterを連携して実現できることを紹介します。WebSAM JobCenterを使えばBoxのWebAPIで実行できるいろいろな操作を自動化できます。サンプルの要件を元に設定例を紹介します。
要件
お客様とファイル共有を行う際に、以下の処理を自動化したい。
- Boxのフォルダを作成し、お客様へ提供するファイルをアップロードする。
- Boxのフォルダにパスワード付き共有リンクを追加する。
- 3日後の23時にフォルダを削除する。

要件を実現するには
要件を実現するには、Boxのフォルダ作成や共有リンクの追加など、WebSAM JobCenterが提供しているBox連携部品では提供されていない手段でBoxと連携する必要があります。Box連携部品で提供されていないBoxへの操作ついては、拡張カスタムジョブのHTTP接続部品を利用してBoxのWebAPIを実行することで要件を実現します。このように、HTTP接続部品とBox連携部品を組み合わせれば、多様な要件に対応することが可能です。
この記事では、Box連携部品では提供されていないBoxへの操作をHTTP接続部品で行い、要件を実現する方法を紹介します。なお、以降で説明する要件の実現方法やBoxのWebAPIについては、2022年12月09日時点の情報をもとに記載しています。
今回の要件を実現するには、以下のようなジョブネットワークを作成します。
このうち、フォルダ作成、共有リンク設定、フォルダ削除(上図の赤枠部分)はBox連携部品では提供されていない操作であるため、これらをHTTP接続部品で実現します。以降で、これらの3つのBoxへの操作をHTTP接続部品でどのように実現するかを説明します。
ファイルのアップロードなど、他のBox連携部品の利用方法については、第32回のブログ記事や、マニュアル「拡張カスタムジョブ部品利用の手引き」の7章をご覧ください。
フォルダ作成の実現方法
Boxのフォルダ作成はHTTP POSTメソッドのWebAPIとして提供されています。フォルダ作成WebAPIでは、作成するフォルダの名前などをリクエストボディに指定します。
Boxのフォルダ作成をWebSAM JobCenterから行うため、HTTP接続部品のHTTP-POST部品を利用します。送信したいリクエストボディの内容をHTTP-POST部品で指定するには、あらかじめその内容をファイルとして保存しておき、そのファイルへのパスをカスタムパラメータのrequest_body_fileで指定します。
例で示したジョブネットワークでは、単位ジョブ「前処理」で送信したいリクエストボディ内容を生成し、JSONファイルとして保存しておくフローになっています。
request_body_file パラメータでそのJSONファイルへのパスを指定することで、JSONファイルの内容がHTTP-POSTメソッドで送信されます。

また、Boxへの操作を行うためにはアクセストークンが必要です。Box連携部品のBOX_APIトークン取得部品を利用してアクセストークンを取得し、それを暗号化DBに保存します。後続の部品で暗号化DBに保存されたアクセストークンを参照してHTTP接続部品でアクセストークンを利用した認証を行います。
具体的には、HTTP-POST部品で以下のような設定を行います。
- authenticateパラメータでbearerを指定
- auth_tokenパラメータでアクセストークンが保存された暗号化DBのキーを指定

上図では、暗号化DBの「token」というキーにアクセストークンが保存されている場合の設定例を示しています。
この後に説明する共有リンク設定、フォルダ削除でも同様の方法でアクセストークンを設定します。
共有リンク設定の実現方法
共有リンクの設定(追加)はHTTP PUTメソッドのWebAPIとして提供されています。Boxの共有リンクの追加WebAPIでは、パラメータを以下の方法で指定します。
- 共有リンクを追加したいファイル(フォルダ)IDをリクエストURLに指定
- 共有リンクの設定を明示的にリクエストボディで指定するため、fieldsクエリパラメータに”shared_link”という文字列を指定
- リクエストボディで、共有リンクの詳細を設定
共有リンクの追加をWebSAM JobCenterから行うため、HTTP接続部品のHTTP-PUT部品を利用します。BoxのWebAPIで指定する各パラメータをHTTP-PUT部品では以下のように設定します。
- ファイル(フォルダ)IDを含むリクエストURLを環境変数に設定し、HTTP-PUT部品でその環境変数を参照してカスタムパラメータのurlに設定
- fieldsクエリパラメータとその値をスクリプトで設定
- リクエストボディとして送信する内容をフォルダ作成部品と同様にJSONファイルで作成し、そのファイルへのパスをカスタムパラメータのrequest_body_fileに設定
1点目の共有リンクを追加するフォルダのIDと、そのフォルダのIDを含むURLを環境変数に設定する処理は、共有リンク設定ジョブの前にあるコンテンツID取得ジョブで行います。 コンテンツID取得ジョブのスクリプトを以下のように修正します。
|
このスクリプトを設定したコンテンツID取得ジョブが実行されると、
{{{boxContentID}}}部分が取得したコンテンツIDに展開され、共有リンクを追加したいフォルダIDを含むURL文字列を作成できます。
さらに、変数継承機能を利用することで、この文字列がFOLDERIDという環境変数に設定され、それを後続のジョブで参照することができます。変数継承機能の詳細は、マニュアル「基本操作ガイド」の4.2.3節をご覧ください。
HTTP-PUT部品のurlパラメータに以下のような設定を行うことで、前のコンテンツID取得ジョブで得たフォルダIDを含むURLにWebAPIを送信することができます。

2点目のクエリパラメータの指定は、共有リンク設定ジョブのスクリプトで行います。共有リンク設定ジョブのスクリプトに以下の記述を行います。
|
このような記述を行うことで、スクリプトで記述したキーと値がクエリパラメータとして付与され、HTTP-PUTリクエストとして送信されます。
フォルダ削除の実現方法
共有リンクの設定(追加)はHTTP DELETEメソッドのWebAPIとして提供されています。削除したいファイル(フォルダ)IDを含むURLに対してDELETEメソッドのリクエストを実行することで、該当フォルダを削除することができます。
今回は、フォルダだけでなくフォルダ内のファイルも削除するため、recursiveクエリパラメータを指定します。共有リンク設定ジョブと同様に、フォルダ削除ジョブのスクリプトに以下の記述を行います。
|
このような記述を行うことで、スクリプトで記述したキーと値がクエリパラメータとして付与され、HTTP-DELETEリクエストとして送信されます。
動作確認
作成したジョブネットワークを即時投入で実行します。

Boxにフォルダが作成され、ファイルがアップロードされているか確認します。

3日後の23時にファイル削除ジョブが実行され、作成したフォルダ(今回の例ではfolder1116)が削除されていることを確認します。

おわりに
今回のブログはいかがでしたでしょうか?WebSAM JobCenterは以下のWebページから60日間無償で利用できる試用版がダウンロードできますので、ぜひ機能をお試しください。
[WebSAM JobCenter試用版]
https://jpn.nec.com/websam/jobcenter/trial.html
[参考情報]
https://jpn.nec.com/websam/jobcenter/download.html
⇒WebSAM JobCenter拡張カスタムジョブ部品利用の手引き
⇒WebSAM JobCenter基本操作ガイド
本ブログは皆様から頂いた様々なお問合せを参考にして更新しております。今後も皆様のお役に立つ情報を発信して行きたいと考えておりますのでWebSAM JobCenterブログをよろしくお願いいたします。