Terminalで顧客情報を取得する!
What
JSforceを使って、顧客情報をTerminal上で取得してみます。
JSforce https://jsforce.github.io/
How
JSforceの導入
まず、セットアップします。
$ sudo npm install jsforce $ jsforce --version 1.9.3
Salesforceにログイン
パスワードとセキュリティトークンは続け様に書かないと、ログインできません。
$ jsforce $ login(('<ユーザー名 (ログイン時に使用したEmail)>', '<パスワード><セキュリティトークン>')
[参考] https://developer.salesforce.com/forums/?id=906F0000000ApdZIAS
Queryを実行
公式のリファレンスを参考にクエリを書きます。
例えば、リードユーザーの名前、電話番号を取得したい場合、次のように書きます。
$ query("SELECT Name, Phone from Lead LIMIT 3")
結果はJSONで返ります。
{ totalSize: 3, done: true, records: [ { attributes: [Object], Name: 'Dadio Jr Bill', Phone: '(614) 431-xx00' }, { attributes: [Object], Name: 'Luce Eugena', Phone: '(781) 270-xx00' }, { attributes: [Object], Name: 'Eberhard Sandra', Phone: '(626) 4xx-0700' } ] }
遭遇したエラー
API is not enabled for this Organization or Partner
API_DISABLED_FOR_ORG: API is not enabled for this Organization or Partner
APIを許可したユーザーでない場合、発生するエラーです。
管理者がAPIを無効にしているか (デフォルトでは有効)、Trial版の場合発生します。
Trial版で試してる場合は、Developer版に切り替えましょう。無料です。
Developer版はこちらから取得できます。
[参考] https://trailblazers.salesforce.com/answers?id=90630000000hxbhAAA
errorCode: 'MALFORMED_QUERY'
上記のクエリにWHERE句を入れようとすると発生します。
$ query("SELECT Name, Phone from Lead LIMIT 4 WHERE Phone='(626) 4xx-0700'")
項目が多い場合やクエリが複雑な時に発生するようです。