ふぇぇん、コマンドでデータローダーを実行したいのに、サンドボックス環境に繋がらないよぅ。
実はendpointでサンドボックスのURLを指定しているだけじゃうまくいかないんだ!その解決方法について解説するね!
Salesforce(セールスフォース)でデータをインポートするのに便利なDataLoader(データローダー)!
GUIではもちろんですが、コマンドラインでの実行も可能です。バッチ処理で行いたいときなんて便利ですね!
しかし、サンドボックス環境に繋げようとしても本番環境のほうに繋がってしまい、ログイン認証できずエラー、という事象が起こります。その対策について今回解説しようと思います!
エラーの内容
こんなエラーが出たんですぅ…。
Error while calling web service operation: login, error was: Invalid username, password, security token; or user locked out.
com.sforce.soap.partner.fault.LoginFault: null
ログインできなかったというエラーだね!ちょっと上のほうにこんなメッセージが出力されているのがわかるかな?
process.ProcessRunner run (ProcessRunner.java:155) - Logging in to: https://login.salesforce.com
あれ?私サンドボックス環境にログインするように設定したんだけど、本番環境にアクセスしてない?
この設定が一筋縄じゃいかないんだ!
process-conf.xmlの記述
データローダーをコマンドラインで実行するにはprocess-conf.xmlという設定ファイルを作る必要があります。
ここには暗号化されたログイン情報や各種設定を記載することになります。データローダーをインストールする際に一緒にサンプルが入っているのでそれを改変することが多いかと思います。
以下は公式(https://help.salesforce.com/s/articleView?id=000386154&type=1)に載っている設定例です。
<設定例>
-----
<entry key="sfdc.endpoint" value="https://login.salesforce.com"/>
<entry key="sfdc.username" value="hogehoge@test"/>
<entry key="sfdc.password" value="******暗号化パスワード*****"/>
<entry key="process.encryptionKeyFile" value="key.txt"/> //(データローダーバージョン 42 以前の場合)
<entry key="process.encryptionKeyFile" value="C:\Users\<Windowsユーザ名>\.dataloader\dataLoader.key"/> //(データローダーバージョン 43 の場合)
<entry key="process.mappingFile" value="test.sdl"/>
<entry key="dataAccess.name" value="test_data.csv"/>
<entry key="sfdc.debugMessages" value="true"/>
<entry key="sfdc.debugMessagesFile" value="testMap.sdl"/>
<entry key="process.outputSuccess" value="C:\test\success.csv"/>
<entry key="process.outputError" value="C:\test\error.csv"/>
<entry key="dataAccess.type" value="databaseWrite"/>
-----
このkeyがsfdc.endpointになっている箇所がエンドポイント、つまりログインするURLになります。本番組織なら上記のように
https://login.salesforce.com
か、
https://MyDomainName.my.salesforce.com/services/Soap/u/
と記載します。
サンドボックス組織の場合はサンドボックスのURLにしないといけないので、
https://test.salesforce.com
か、
https://MyDomainName--SandboxName.sandbox.my.salesforce.com
と書くことになります。
ここちゃんとサンドボックス組織のものにしたって~!
実はまだ設定が必要なんだ!
サンドボックス組織にログインする記述項目!
実は上記のエンドポイントをサンドボックス組織にしてもうまくつながらないケースがあります。
そんな時は以下の設定をprocess-conf.xmlに追記します!
<entry key="sfdc.oauth.environment" value="Sandbox"/>
これでサンドボックス環境に繋がります!
コマンドラインでもデータローダーを!
うまくいったよ!しかしこの情報は公式ドキュメントにないから盲点だったね!
そうだね!だからこの記事が困っている人の助けになれば嬉しいな!
コメント