ゴール
JavaScript から Salesforce API をコールする
前回の記事
プログラムの実行環境について
AWS Cloud9 から JavaScript を実行しますが、Node.js が動作する環境であれば OK です。
以下、本記事の環境。
AWS Cloud9 : AWSの統合開発環境(IDE)
(Node.js, Python, Ruby, Java, Go, C# とかでプログラム記述可能)
AWS EC2 : AWS上の仮想サーバー(Cloud9はEC2インスタンスとして動作します)
Node.js : サーバサイド JavaScipt 実行環境
JSforce :Salesforce API に アクセスできる JavaScript ライブラリ
AWS Cloud9
AWS Cloud9 は、ブラウザのみでコードを記述、実行、デバッグできるクラウドベースの統合開発環境 (IDE) です。Cloud9 には、JavaScript, Python, PHP などの一般的なプログラム言語に不可欠なツールがあらかじめパッケージ化されています。今回は、Salesforce Web API と連携したウェブアプリケーションを開発・テストする環境として使います。Amazon Linux 2 は、RedHat 系のディストリビューションであるため、Red Hat Enterprise Linux(RHEL) や CentOS, Fedora とほぼ同じように使うことが可能です。
ec2-user:~/environment $ cat /etc/os-release
NAME="Amazon Linux"
VERSION="2"
ID="amzn"
ID_LIKE="centos rhel fedora"
VERSION_ID="2"
PRETTY_NAME="Amazon Linux 2"
ANSI_COLOR="0;33"
CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2"
HOME_URL="https://amazonlinux.com/"
Node.js
Node.js は、JavaScript の実行環境です。Webサーバなどのスケーラブルなネットワークプログラムの記述する場合に適した環境です。Salesforce の開発でお馴染みの Visual Studio Code も Node.js で作られてます。AWS Cloud9 は、Node.js がインストール済みで利用することが可能です。
ec2-user:~/environment $ node --version
v16.15.1
参考:AWS Cloud9 の Node.js サンプル
JSforce
JSforce (別名 Node-Salesforce) は、Salesforce の API を利用した JavaScript ライブラリです。Node.js 上で動作させることが可能です。非同期の JavaScript 関数呼び出しで Salesforce が提供するさまざまな API へのアクセスすることができます。コマンドラインインターフェイス (CLI) も用意されており、手軽に実行することが可能です。
ec2-user:~/environment $ npm install -g jsforce
サンプルプログラムを実行してみよう
上記の環境が用意できたら、Trailhead のサンプルプログラムを実行してみましょう。
参考:プラットフォーム API の基本>REST API を使用する
Postman からコードの記述へ移行すると、選択したプログラム言語を使用して REST API を操作することになります。幸いにも、エキスパートの Salesforce 開発者によって、REST API の消費プロセスを簡略化するラッパーがいくつかの言語で記述されています。Node.js および Ruby で記述された 2 つのサンプルクエリを次に示します。それぞれ、JSforce および Restforce のラッパーを使用しています。
JSforce を使用した Node.js の例
const jsforce = require("jsforce");
const conn = new jsforce.Connection({
// you can change loginUrl to connect to sandbox or prerelease env.
// loginUrl : "https://test.salesforce.com"
});
// Log in with basic SOAP login (see documentation for other auth options)
conn.login(
'Salesforce のユーザID',
'パスワード' + 'セキュリティトークン',
(err, res) => {
if (err) {
return console.error("Failed to log in to Salesforce: ", err);
}
console.log("Successfully logged in!");
// Run a SOQL query
conn.query("SELECT Id, Name FROM Account LIMIT 5", (err, result) => {
if (err) {
return console.error("Failed to run SOQL query: ", err);
}
// Display query results
const { records } = result;
console.log(`Fetched ${records.length} records:`);
records.forEach(record => {
console.log(`- ${record.Name} (${record.Id})`);
});
});
}
);
興味がある方は、JSforce ライブラリの connection.js で何をしているか読んでみましょう。
参考:JSforce のドキュメント(connection.js)
Node.js の実行
ec2-user:~/environment $ node index.js
セキュリティトークン
セキュリティトークンとは、信頼されている IP 範囲の外にある IP アドレスから、API を使用して Salesforce にアクセスする場合、ログインするにはセキュリティトークンが必要です。セキュリティトークンとは、パスワードに付加したり、クライアントアプリケーションの独立した項目に入力したりする、大文字と小文字を区別する英数字のコードです。例えば、データローダから Salesforce にアクセスする際に必要になったりします。API を使用する場合は、上記の通り、セキュリティトークンをパスワードに付加します。
[右上の顔のマークのアイコン]>[私のセキュリティトークンのリセット] からセキュリティトークンを再設定することが可能です。
参考:セキュリティトークンのリセット
参考:「ログイン履歴に API セキュリティトークンが必要です」の表示が出る場合の対処方法
まとめ
本稿では、Node.js 上から JSforce ライブラリを利用することで、プログラムから簡単にアクセスできることを確認しました。AWS の環境は必須ではありませんが、プログラムを色々と試すにはよいかと思います。Node.js は、JavaScript の実行環境であり、その上で動作する JavaScript のライブラリが JSforce です。Salesforce をプログラムから API 経由でアクセスするためには、セキュリティトークンも必要になります。セキュリティトークンは必要に応じて取得してください。
おわり。