crmprogrammer38の日記

主にDWHやSalesforceのプログラムメモです。

【Java】beanshellでSalesforceのファイル(添付ファイル、ドキュメント、イベントログ)のエクスポートツールを作りました

SalesforceのバイナリファイルはSOQLで取得することができます。

例えば添付ファイルはAttachmentというオブジェクトから取得できます。


ですが、SOQLでオブジェクトからデータを取得するとbase64エンコードされた文字列となるため、バイナリにデコードしてファイルに出力する処理が必要です。
そこで、ファイルエクスポートツールを作りました。

 

ここからダウンロードしてください。ダウンロードしたzipを解凍すると次のファイルがあります。

f:id:crmprogrammer38:20170630165600p:plain

対象のファイルは添付ファイル(Attachment) 、ドキュメント(Document)、Event Log Files(EventLogFile)の3つを対象としています。
各ファイルは次のようになっています。

バッチファイル スクリプトファイル 説明
batch_Attachment.bat download_Attachment.txt 添付ファイルオブジェクト(Attachment)のファイルを出力します。
batch_Document.bat download_Document.txt ドキュメントオブジェクト(Document)のファイルを出力します。
batch_EventLogFile.bat download_Eventlogfile.txt イベントログを使うにはライセンスが必要です。
Event Log Files(Eventlogfile)のファイルを出力します。

 スクリプトファイルで、SOQLの条件は指定していないので、必要に応じて条件を指定してください。以下は添付ファイルへのSOQLを直近10日で更新されたという条件を追加した例になります。

    //3.バイナリデータを取得するSOQL
    String soql = "select Id, Name, Body from Attachment Where LastModifiedDate = LAST_N_DAYS:10";

 

Salesforceへの接続情報や通信設定は、各スクリプトの次の箇所を修正してください。

    //1.通信情報
    String proxyhost = null;
    Integer proxyport = null;
    String ntlmdomain = null;

    String proxyuser = null;
    String proxypassword = null;

    //2.Salesforce接続情報
    String sfendpoint = "https://test.salesforce.com/services/Soap/u/40.0";
    String sfusername = "sample@username";
    String sfpassword = "samplepassword";

 

 柔軟にテキストを修正できるという点でbeanshellの良さがあるなーと思いました。