これまで2回にわたって、連携サービス「SkyOnDemand」でSalesforceのファイルを操作する方法をご紹介してきました。最後となる3回目は、大容量のファイルをアップロードする方法をご紹介したいと思います。
これまでの記事
なお、過去の記事は「DataSpider Cloud」をご利用の場合もお読みいただけます。今回は、「DataSpider Cloud」を使用して説明していきたいと思います。
サイズの大きいファイルに気を付けよう
Salesforceのファイルをアップロードする方法については、過去の記事「Salesforceのファイルをアップロード/ダウンロードしてみよう」でご紹介していました。
以前の記事では、書き込み系コンポーネントの「データ書き込み(INSERT)」を使用して簡単にファイルをアップロードすることができましたが、サイズの大きいファイルを扱う場合は注意が必要です。
この機能は SOAP API を使用しており、アップロードでは 38MB までという制限が設けられています。
Salesforce CRM Content や Salesforce ファイル は 2GB まで許容されていますが、SOAP API では制限のため 38MB を超えるファイルをアップロードすることができません。
では、SOAP API の制限を超えるファイルをアップロードしたい場合にどのように解決すべきかというと、 REST API を使用する方法があります。
REST APIとは?
Salesforceには多くの種類のAPIが用意されていますが、REST APIはその中でも軽量に動作する特徴があります。ファイルの操作は1件ずつとなりますが、アップロードできるサイズは 2GB (ヘッダーを含む)まで許容されています。
DataSpider CloudでREST APIを実行する場合、RESTアダプタを使用します。RESTアダプタは汎用的なアダプタとなっており、様々なRESTfulサービスへリクエストを送ることができます。
(なんとここまでほぼ前回の記事のコピペで構成されています。エコですね。)
RESTアダプタを使用した設定手順
100MBのファイルをDataSpider Cloudのストレージに用意しておきました。このファイルを「Salesforce ファイル」へアップロードする設定を行ってみたいと思います。
▼ グローバルリソース接続設定の作成
グローバルリソースの新規作成にて ネットワーク > REST > REST接続設定 を選択します。
URLは、下記のように設定します。instance_name には組織が所属するインスタンス名(apなど)を指定します。
▼ セッションIDの取得処理
ここからデザイナに移り、スクリプトの設定をしていきます。REST APIでリクエストを送信する場合、認証ヘッダーにSalesforceのセッションIDを渡す必要があります。SalesforceのセッションIDを取得する方法はいくつかありますが、今回はSalesforceアダプタの「サーバ情報取得」コンポーネントを使用します。
この処理が実行されると、サーバ情報の取得を実行するためにログインが実行され、取得したセッションIDがコンポーネント変数「session_id」に格納されます。
▼ REST API の実行処理
RESTアダプタの「POST実行」コンポーネントを使用します。
【必須設定】
パスには、グローバルリソースに設定したURL以降のパスを指定します。(Salesforceファイル のエンドポイントは API マニュアルから確認することができます。)
【リクエスト設定】
REST API のファイルアップロードではマルチパートフォーム形式でリクエスト送信する必要があります。要素はjsonとバイナリです。
【ヘッダ設定】
AuthorizationヘッダにBearerトークンとしてセッションIDを指定します。「サーバ情報取得」のコンポーネント変数を代入指定することでセッションを再利用してREST APIを実行することになります。
【レスポンス設定】
REST APIのレスポンスデータを後続の処理で扱うことも可能ですが、今回は割愛してデフォルト設定のままとします。
【認証設定】
セッションIDによる認証となるため、ここでの認証設定は必要ありません。
▼ マッピングの作成
「マッピング」コンポーネントを配置して、「POST実行」へデータフローを引きます。(ちなみに今回は1件の入力データを渡したかったので、入力データのないマッピングからデータフローを引いています。こうすると、スクリプト変数やロジックアイコンの値から1件のデータを作成して渡すことができます。)
「複数行文字列定数」には、json形式の文字列を設定しています。
{ "title":"100MBファイル" }
これ以外のロジックアイコンは「単一行文字列定数」を使用して、それぞれの名称と同じ文字列を設定しています。
実行してみる
プロセスフローをつなげて完成したスクリプトを実行してみます。
Salesforceにログインして「ファイル」タブを表示すると、正常にアップロードされていることが確認できました!
今回は、Salesfroceファイルへのアップロードを例に紹介しましたが、Salesforce CRM Contentへのアップロードも実行することができました。
注意点
ファイルサイズの制限は筆記時点(2018/2/28)で確認した内容となっています。