先日、2016/2/21に実施されるSkyOnDemandバージョンアップの告知がされました。
この度のバージョンアップでは、SalesforceアダプタがAPI34.0に対応される他、待望のカスタム表示ラベルの取得機能が追加されるなど、多くの機能強化が行われます。SkyOnDemandユーザの方は、プレリリース環境で先行して新機能を試すことができますので、是非バージョンアップしたSkyOnDemandを触ってみてください。
さて、今回のブログではSkyOnDemandからSalesforceのファイルを操作する方法について書きたいと思います。
以前執筆した「Salesforceに "Excelの見積書" 作成ボタンをつくる」では、SkyOnDemandが作成したExcelファイルをSalesforceの添付ファイルへアップロードすることで、ユーザがSalesforceのUIから自由にダウンロードできるシステムを実現してみました。
このようなSalesforceへのファイルのアップロードやダウンロード操作もSkyOnDemandでは容易に行うことができます。今回は具体的にどのように設定を行うのかを解説していきます。
Salesforceのファイルストレージの種類
まず、Salesforceのファイルストレージにはどのような種類があるかをおさらいしておきましょう。
種類 | データ格納オブジェクト | ファイルサイズ制限(主な) | 説明 |
添付ファイル | Attachment | 25MBまで | 取引先や商談、カスタムオブジェクトなどの各レコードに添付され、関連リストに表示されます。 |
ドキュメント | Document | 5MBまで | Webリソース (ロゴ、DOT ファイル、その他の Visualforce 資料など) をレコードに添付せずにフォルダに保存します。 |
コンテンツ(Salesforce CRM Content) |
ContentVersion |
2GBまで(ただしSOAP APIによるアップロードは38MBまで) |
社内/外の文書として公開や共有、バージョン管理をします。 |
ファイル(Chatterのファイル) |
FeedItem(ContentVersion) |
2GBまで(ただしSOAP APIによるアップロードは38MBまで) | Chatterに投稿するファイルです。 |
参考 "ファイル、Salesforce CRM Content、Salesforce ナレッジ、ドキュメント、添付ファイルの違いは?"<http://help.salesforce.com/apex/HTViewHelpDoc?id=collab_files_differences.htm&language=ja>
添付ファイルへアップロードしてみる
今回は、商談のレコードに対してExcelファイルを添付してみましょう。
▼ アップロードするExcelファイルはSkyOnDemandのファイルキャッシュ領域に配置されています。
▼ 以下の商談のレコードの添付ファイルへアップロードしようと思います。
▼ 添付ファイルをアップロードするにはオブジェクト「Attachment」へレコードを挿入します。
Salesforceアダプタの「データ書き込み(INSERT)」処理を配置してオブジェクト、スキーマ定義を設定しましょう。今回はスキーマ定義に主な必須項目のみを選択しています。
添付ファイル「Attachment」のそれぞれの項目に入力する値は下記のとおりです。
■ 参照先ID (ParentId)
添付するレコードのIDを指定します。事前に「データ読み取り(クエリー)」処理などを使用して、添付先の商談IDを取得しておきましょう。
■ ファイル名 (Name)
Salesforce上で表示される拡張子付きのファイル名を指定します。
■ 本文 (Body)
この項目には、アップロードしたいファイルのBase64形式に符号化されたバイナリデータを入力します。
ん、なんか面倒くさそう。。。でも大丈夫です!
アダプタには、自動的にファイルをバイナリデータへ変換してリクエストしてくれる機能があります。プロパティ「Base64項目入力形式」で「ファイルパス」を選択しておけば、入力データにはファイルパスをマッピングするだけです。
▼ 完成したスクリプトは以下のようになりました。
マッピングはこんな感じです。「本文(Body)」には、SkyOnDemand上のファイルのパスを指定しています。
(ちなみに今回は1件だけの入力データを渡したかったので、入力データのないマッピングからデータフローを引いています。こうすると、スクリプト変数やロジックアイコンの値から1件のレコードを作成して渡すことができます。)
▼ スクリプトを実行すると、商談のレコードに添付ファイルとしてアップロードされていることが確認できました。
添付ファイルをダウンロードしてみる
次に、先ほどアップロードしたExcelファイルをダウンロードしてみましょう。
▼ ダウンロードしたExcelファイルはSkyOnDemandのファイルキャッシュ領域の以下ディレクトリに配置する想定です。
▼ 先ほど「Attachment」オブジェクトに挿入したレコードを「データ読み取り(クエリー)」処理を使用して検索します。
▼ スキーマ定義で選択した項目「本文(Body)」にはBase64形式のバイナリデータが格納されているため、アップロード時とは逆に、読み取ったバイナリデータからファイルを復元する必要があります。
やはりこの場合もアダプタには便利な機能が用意されており、読み取りと同時に自動的にファイルを復元してくれます。プロパティ「Base64項目出力形式」で「ファイル出力」を選択し、ディレクトリやファイル名などを指定しましょう。
▼ 完成したスクリプトは以下のようになりました。シンプルですね!
▼ スクリプトを実行すると、SkyOnDemandのファイルキャッシュ領域にファイルが作成されていることが確認できました。
今回は添付ファイルを操作しましたが、他のファイルストレージ種類もバイナリデータが保存される項目を持っているので、同じように操作することができます。ただし、それぞれで扱うオブジェクトは異なるため、Salesforceのオブジェクトリファレンスを確認しておきましょう。また、SalesforceアダプタはSOAP APIを使用するため、ファイルサイズの制限についても注意が必要です。
今回ご紹介したように、SkyOnDemandにはSalesforceのファイル操作も簡単に設定できる機能が用意されています。Salesforceとの連携はSkyOnDemandの最も得意とするところです。今後もSalesforceをさらに活用するための機能を紹介していきたいと思います。