CSVファイルを取り込んでSalesforceに登録したり、SalesforceのデータをCSVファイルの形式で出力したりできるデータローダというツールがあります。このデータローダはバッチモードで実行することができ、これによりデータ連携処理の自動化が実現できます。
昔やり方を覚えたときのメモがこちら。数年前のメモでしたが今でもほぼ変わらない方法で実装できました。
やり方はほぼ変わりませんでしたがいくつかハマったところもありました。データローババッチ開発するときには下記については意識しておくと良さそうです。
1. 数値型のエクスポート
レポートからCSV出力するときには特になかったのですが、データローダをバッチモードで起動してエクスポート処理を実行した場合、下記の現象が発生しました。
データ型設定上では小数点以下は0にしていても「1」などの値が「1.0」と出力される。
おそらくこの出力したファイルを再度Salesforceに取り込む場合は「1.0」となっていても問題ないと思いますが、別システムとの連携の際には少し困ります。このトラブルを回避する方法としては「テキスト型の数式項目を用意してそちらを出力する」という方法が良いと思います。テキスト型の数式項目で対応することで、数値型や通貨型で自動で付いてくる区切り文字の「,」(カンマ)を表示しないようにもできます。
2. 出力項目とSDLファイルについて
データ出力のための項目指定はSOQLクエリで指定しますがそれだけでは出力されません。SDLファイルでマッピング対象として初めて出力されます。またSDLファイルでは出力時の項目名も指定することになりますが、日本語指定はできないのでAPI名やそれ以外の英字で指定する必要があります。
3. 実行環境はWindowsのみ
今回自分でハマった箇所ではありませんが、データローダバッチの開発はWindows環境で行う必要があります。Salesforce開発はMac環境で行う場合も増えていますので、普段Macで作業している場合はデータローダバッチ開発の際に別途作業用PCが必要になることを意識しておくと慌てずに済むと思います。
4. プロキシ設定
企業によってはネットワークの制限が厳しい場合があると思います。ブラウザからSalesforceにログインできてもデータローダなどのツールからはアクセスできないというケースがありえます。設計段階でデータローダによるアクセスが可能かは確認しておくのが良いと思います。
5. 実行ドライブやパスの検討
開発時には特に意識することなくCドライブで作業することが多いと思います。データ連携用の処理として開発するときには必ずしもCドライブとは限らないと思います。データローダバッチ開発ではバッチファイルなどのディレクトリを指定することになるので早めにに実行パスなどは検討しておくのが良いと思います。Cドライブでは動いてもそれ意外のドライブで実行するとエラーとなる可能性もありますのでそのあたりも考慮してスケジュールを決めていくとギリギリになって慌てずに済むと思います。
まとめ
データローダバッチ開発の際には上記について意識しておくと良いと思います。特に他社システム開発を請け負って作業する場合に実行環境について意識しないと納品直前で実行できないというトラブルに遭遇することになります。