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'
    }
  ]
}

[公式リファレンス] https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_sosl_intro.htm

遭遇したエラー

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'")

項目が多い場合やクエリが複雑な時に発生するようです。

[参考] https://developer.salesforce.com/docs/atlas.ja-jp.soql_sosl.meta/soql_sosl/sforce_api_calls_soql_select.htm?search_text=MALFORMED_QUERY