JSforce Blogで対話型の方法でSalesforceのAPIを実行できるJSforce REPLについて紹介されていたので試してみました。
Salesforceに接続
まず『.connect』コマンドで簡単にログインできるとのこと。ターミナルを起動してDeveloper環境に接続してみました。
『.connect』の後はユーザ名です。
$ jsforce
> .connect username@example.org
成功すると『Logged in as: ユーザ名』と表示されます。初回実行時にはパスワードを聞かれましたが再実行時はユーザ名だけで大丈夫でした。
レコードの作成
レコードの作成は次のようなコマンドで行えます。
> sobject('Account').create({ Name: 'My Test Account' });
実際に実行してみたのがこちらです。
メッセージを確認すると無事に実行できたみたいです。Salesforce組織を確認してみると指定した名前のレコードが登録されていました。
せっかくなので複数項目の登録も試してみました。各項目はカンマ区切りで指定します。
> sobject('Contact').create({LastName: 'Yoshikawa', FirstName: 'Taiki', AccountId: '001i000001HUOtUAAX'});
これで取引先に紐付く取引先責任者を作成することができました。
クエリの実行
Salesforceのレコードを取得するためのクエリは次のようなコマンドで実行できるみたいです。
> query("SELECT Id, Name FROM Account WHERE Name LIKE 'P%'");
今回はLIKEではなくORDER BYとLIMIT指定で実行してみます。
> query("SELECT Id, Name FROM Account ORDER BY Name ASC LIMIT 5");
JSforce Blogのサンプルと同じようにバッチリ取得できました。
CoffeeScriptモード
JSforceにはCoffeeScirptを使用する方法も用意されているみたいです。
$ jsforce --coffee
coffee>
『.connect』コマンド実行前の『$ jsforce』を宣言するときに後ろに『--coffee』を指定することで使用できるようになりました。
CoffeeScriptのときも『.connect』コマンドでSalesforceに接続できました。
この状態でJSforce Blogで紹介されているサンプルと同じようにクエリを実行してみたところ、無事にレコードを取得できました。
> query "SELECT Id, Name, AccountNumber FROM Account ORDER BY Name ASC LIMIT 3"
コマンドの自動補完
それと、JSforceにはコマンドの自動補完機能も用意されているとのことです。コマンドを途中まで入力した状態でTabキーを押下すると対象のコマンド一覧が表示されました。コマンドを思い出せない時に便利そうです。
ちなみに何も入力しない状態でTabキーを押下したときは全て?のコマンドを確認できるみたいです。
OAuth接続
最後にOAuthを使った接続方法について確認してみました。この機能を利用するにはSalesforce側で接続アプリケーションの設定を行い『client ID』などを準備する必要があります。
設定画面の『作成』→『アプリケーション』→『接続アプリケーション』から設定可能です。
設定内容はおそらくこんな感じ
設定内容を保存するとSalesforce側の設定は完了です。(有効化されるまで2〜10分程かかるみたいです。)
ここまで設定できたら『.register』コマンドを実行してclient IDなどを設定していきます。
設定するのは以下の4つです。
- client ID (consumer key) →コンシューマ鍵
- client secret (consumer secret) → コンシューマの秘密
- redirect URI
- login URL (default is https://login.salesforce.com)
たぶんこんな感じになると思います。
正しく設定できていれば『.authorize』コマンドで接続できると思います。
> .authorize
実行してみると新しいタブで次の認証画面が表示されました。
許可ボタンを選択すると認証コードが表示されたりすると思うのですが、ちょっとここの設定がうまくいきませんでした。SalesforceのOAuth接続まわりはまだ理解できていないので使い方を覚えてからもう一度試してみようと思います。
OAuth接続だけうまくいっていませんが、JSforce Blogで紹介されていた5つの使い方について一通り確認することができました。Salesforce APIを簡単に試せるので使い方を覚えるとすごく便利そうです。
追記
接続アプリのコールバックURL設定について教えてもらったのでもう一度試してみました。
@tyoshikawa1106 接続アプリのコールバックURLとして http://localhost:<port>/oauth2/callback (portには既存のものとかぶらない任意のTCPポート番号を設定) などとURLを設定するとうまくいくとおもいます
— Shinichi Tomita (@stomita) 2015, 1月 15
コールバック URLを次のように指定します。
『.register』コマンドで接続情報を設定します。
『.authorize』コマンドを実行します。
すると前回確認時にエラーメッセージが表示された部分がabout:blankと表示されました。
ターミナルの方を見てみると『Logged in as』の文字が...無事に接続できたみたいです。
これでOAuth接続もうまくいきました。今までコンシューマ鍵とかコールバック URLとかややこしいなと思ってましたが、ようやくOAuthについて理解出来た気がします。
ちなみに接続アプリケーションの設定を変更するときは反映されるまで時間がかかることがあります。コールバックURLを変更したのに反映されないときは少し時間を置いてから再度実行するとうまくいくと思います。
おまけ
OAuth接続した情報はユーザ詳細ページの『OAuth 接続アプリケーション』関連リストから確認できます。
取り消しリンクでトークンを無効にすると次にOAuth接続した際に認証画面が表示されます。