Java: BeanShellでSalesforceのファイル(添付ファイル、ドキュメント、イベントログ)のエクスポートツールを作りました
SalesforceのバイナリファイルはSOQLで取得することができます。
例えば添付ファイルはAttachmentというオブジェクトから取得できます。
ですが、SOQLでオブジェクトからデータを取得するとbase64エンコードされた文字列となるため、バイナリにデコードしてファイルに出力する処理が必要です。
そこで、ファイルエクスポートツールを作りました。
ここからダウンロードしてください。ダウンロードしたzipを解凍すると次のファイルがあります。
対象のファイルは添付ファイル(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の良さがあるなーと思いました。