読者です 読者をやめる 読者になる 読者になる

tyoshikawa1106のブログ

- Force.com Developer Blog -

SFDC:JSforce REPLの使い方を勉強しました

Force.com salesforce.com JSforce

JSforce Blogで対話型の方法でSalesforceのAPIを実行できるJSforce REPLについて紹介されていたので試してみました。

Salesforceに接続

まず『.connect』コマンドで簡単にログインできるとのこと。ターミナルを起動してDeveloper環境に接続してみました。

f:id:tyoshikawa1106:20150115222115p:plain

『.connect』の後はユーザ名です。

$ jsforce
> .connect username@example.org

成功すると『Logged in as: ユーザ名』と表示されます。初回実行時にはパスワードを聞かれましたが再実行時はユーザ名だけで大丈夫でした。

レコードの作成

レコードの作成は次のようなコマンドで行えます。

> sobject('Account').create({ Name: 'My Test Account' });

実際に実行してみたのがこちらです。

f:id:tyoshikawa1106:20150115223347p:plain

メッセージを確認すると無事に実行できたみたいです。Salesforce組織を確認してみると指定した名前のレコードが登録されていました。

f:id:tyoshikawa1106:20150115223519p:plain


せっかくなので複数項目の登録も試してみました。各項目はカンマ区切りで指定します。

> sobject('Contact').create({LastName: 'Yoshikawa', FirstName: 'Taiki', AccountId: '001i000001HUOtUAAX'});

f:id:tyoshikawa1106:20150115224048p:plain


これで取引先に紐付く取引先責任者を作成することができました。

f:id:tyoshikawa1106:20150115224146p:plain

クエリの実行

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のサンプルと同じようにバッチリ取得できました。

f:id:tyoshikawa1106:20150115224607p:plain

CoffeeScriptモード

JSforceにはCoffeeScirptを使用する方法も用意されているみたいです。

$ jsforce --coffee
coffee>

『.connect』コマンド実行前の『$ jsforce』を宣言するときに後ろに『--coffee』を指定することで使用できるようになりました。

f:id:tyoshikawa1106:20150115225532p:plain


CoffeeScriptのときも『.connect』コマンドでSalesforceに接続できました。

f:id:tyoshikawa1106:20150115230040p:plain


この状態でJSforce Blogで紹介されているサンプルと同じようにクエリを実行してみたところ、無事にレコードを取得できました。

> query "SELECT Id, Name, AccountNumber FROM Account ORDER BY Name ASC LIMIT 3"

f:id:tyoshikawa1106:20150115230424p:plain

コマンドの自動補完

それと、JSforceにはコマンドの自動補完機能も用意されているとのことです。コマンドを途中まで入力した状態でTabキーを押下すると対象のコマンド一覧が表示されました。コマンドを思い出せない時に便利そうです。

f:id:tyoshikawa1106:20150115231356p:plain


ちなみに何も入力しない状態でTabキーを押下したときは全て?のコマンドを確認できるみたいです。

f:id:tyoshikawa1106:20150115231543p:plain

OAuth接続

最後にOAuthを使った接続方法について確認してみました。この機能を利用するにはSalesforce側で接続アプリケーションの設定を行い『client ID』などを準備する必要があります。


設定画面の『作成』→『アプリケーション』→『接続アプリケーション』から設定可能です。

f:id:tyoshikawa1106:20150115232906p:plain

f:id:tyoshikawa1106:20150115232916p:plain


設定内容はおそらくこんな感じ

f:id:tyoshikawa1106:20150115233940p:plain


設定内容を保存するとSalesforce側の設定は完了です。(有効化されるまで2〜10分程かかるみたいです。)

f:id:tyoshikawa1106:20150115234206p:plain


ここまで設定できたら『.register』コマンドを実行してclient IDなどを設定していきます。

f:id:tyoshikawa1106:20150115234518p:plain

設定するのは以下の4つです。

  • client ID (consumer key) →コンシューマ鍵
  • client secret (consumer secret) → コンシューマの秘密
  • redirect URI
  • login URL (default is https://login.salesforce.com)

たぶんこんな感じになると思います。

f:id:tyoshikawa1106:20150115234943p:plain


正しく設定できていれば『.authorize』コマンドで接続できると思います。

> .authorize


実行してみると新しいタブで次の認証画面が表示されました。

f:id:tyoshikawa1106:20150115235733p:plain


許可ボタンを選択すると認証コードが表示されたりすると思うのですが、ちょっとここの設定がうまくいきませんでした。SalesforceのOAuth接続まわりはまだ理解できていないので使い方を覚えてからもう一度試してみようと思います。

OAuth 2.0 Web サーバ認証フロー


OAuth接続だけうまくいっていませんが、JSforce Blogで紹介されていた5つの使い方について一通り確認することができました。Salesforce APIを簡単に試せるので使い方を覚えるとすごく便利そうです。

追記

接続アプリのコールバックURL設定について教えてもらったのでもう一度試してみました。


コールバック URLを次のように指定します。

http://localhost:8011/oauth2/callback

f:id:tyoshikawa1106:20150116051022p:plain

『.register』コマンドで接続情報を設定します。
f:id:tyoshikawa1106:20150116044211p:plain


『.authorize』コマンドを実行します。
f:id:tyoshikawa1106:20150116044847p:plain


すると前回確認時にエラーメッセージが表示された部分がabout:blankと表示されました。
f:id:tyoshikawa1106:20150116045142p:plain


ターミナルの方を見てみると『Logged in as』の文字が...無事に接続できたみたいです。
f:id:tyoshikawa1106:20150116045710p:plain


これでOAuth接続もうまくいきました。今までコンシューマ鍵とかコールバック URLとかややこしいなと思ってましたが、ようやくOAuthについて理解出来た気がします。


ちなみに接続アプリケーションの設定を変更するときは反映されるまで時間がかかることがあります。コールバックURLを変更したのに反映されないときは少し時間を置いてから再度実行するとうまくいくと思います。

おまけ

OAuth接続した情報はユーザ詳細ページの『OAuth 接続アプリケーション』関連リストから確認できます。

f:id:tyoshikawa1106:20150116050258p:plain


取り消しリンクでトークンを無効にすると次にOAuth接続した際に認証画面が表示されます。

f:id:tyoshikawa1106:20150116050539p:plain:w300