Force.com CLIを使ってコマンドラインからSalesforceの情報を収集/更新する

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

Salesforceはじめてみた

幼稚園でおともだちのリスト化とお出かけのスケジューリングとナーチャリングをするためにSalesforceを始めてみた、5歳のあかりです。

screenshot 2016-03-30 20.47.26

いきなりですが、私はエンジニアなので、画面を触りたくありません。でも、APIを直接コールするのも面倒です。そこで、CLI(コマンドライン・インタフェース)です。

さっそくググりました。それらしいものが出てきました。

Force.com CLI

Force.comとは何でしょうか。アプリケーション開発プラットフォームのようです。SalesforceのSales Cloudに入ったデータを読めそうです。読み込めるかやってみましょう。

Force.com CLIをダウンロードしてみます。

screenshot 2016-03-30 20.50.51

Mac版を入れてみました。コマンドたたいてみます。

$ ./force
Usage: force <command> [<args>]

Available commands:
   login     force login [-i=<instance>] [<-u=username> <-p=password>]
   logout    Log out from force.com
   logins    List force.com logins used
   active    Show or set the active force.com account
   whoami    Show information about the active account
   describe  Describe the object or list of available objects
   sobject   Manage standard & custom objects
   bigobject  Manage big objects
   field     Manage sobject fields
   record    Create, modify, or view records
   bulk      Load csv file use Bulk API
   fetch     Export specified artifact(s) to a local directory
   import    Import metadata from a local directory
   export    Export metadata to a local directory
   query     Execute a SOQL statement
   apex      Execute anonymous Apex code
   trace     Manage trace flags
   log       Fetch debug logs
   eventlogfile  List and fetch event log file
   oauth     Manage ConnectedApp credentials
   test      Run apex tests
   security  Displays the OLS and FLS for a give SObject
   version   Display current version
   update    Update to the latest version
   push      Deploy artifact from a local directory
   aura      force aura push -resourcepath=<filepath>
   password  See password status or reset password
   notify    Should notifications be used
   limits    Display current limits
   help      Show this help
   datapipe  Manage DataPipes

Run 'force help [command]' for details.

簡単ですね。

CLIからForce.comにログインする

続いて、Force.comにログインしてみます。

$ ./force login

ブラウザが開きますので、Salesforceにログインします。

screenshot_2016-03-30_20_34_50

その後に、OAuth認証画面が出ます。Force.com CLIを信用するか?と。今回は信用してあげましょう。

screenshot_2016-03-30_20_35_22

これで、使えるようになりました。コマンドラインから、ブラウザのフォーム出すのは、なかなか簡単ですね。

コマンドラインから顧客一覧を取得する

あとはクエリーをたたけばデータ取れそうです。

$ ./force query "select id,name from account order by name"
 Id                 | Name
--------------------+--------------------------------------------------------------------------
 XXXXXXXXXXVWdn7AAD | (サンプル)株式会社AAAAAAA
 XXXXXXXXXXVWdn5AAD | (サンプル)株式会社BBBBBBB
 XXXXXXXXXXVWdn6AAD | (サンプル)CCCCCCC株式会社

ちなみに、このクエリーは、SOQL(Salesforce Object Query Language)というらしい。O/Rマッパー付きのSQLかなぁ。

コンタクトリストに追加する

データが取れたんだから、今度は登録しようってことで、SOQLでInsert文書いてみたら、、、できないっぽい。そこで、調べて見たら、Apexという言語で書けるらしい。Apexは、Force.com上で利用するオブジェクト指向言語だそうです。

んじゃ、コンタクトリストに追加してみましょう。

$ ./force apex
>> Start typing Apex code; press CTRL-D when finished
try {
    Account acct = new Account(Name='クラスメソッド株式会社');
    insert acct;
    //自動発行ID
    ID acctID = acct.ID;

    //コンタクトの作成
    Contact con = new Contact(
        FirstName='和樹',
        LastName='植木',
        Phone='123-1230-1230',
        AccountId=acctID);
    //登録
    insert con;
} catch(DmlException e) {
    System.debug('An unexpected error has occurred: ' + e.getMessage());
}
^D

登録されたかどうか、CLIで確認します。

$ ./force query "select id,name from contact"
 Id                 | Name
--------------------+-------------------------------------------------
 XXXXXXXXXXLOGhIAAX | 植木 和樹

行けたっぽいです。

まとめ

とりあえず、コマンドラインを使ってSalesforceを扱うことができました。CLIから操作できるということは、他システムと連携や自動化が簡単にできるってことですねー。

ところで、未だ利用する画面を見ていない。。。

参考資料

Apex 開発者ガイド - Apex とは?

Apex 開発者ガイド - レコードの挿入と更新

Salesforce ヘルプ - クエリエディタ

Force.com CLI

Salesforce 用語解説 - Force.comとは

Announcing the Command-line Interface for Force.com