1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

JavaScript から Salesforce API をコールする

Posted at

ゴール

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 とほぼ同じように使うことが可能です。

shell
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 がインストール済みで利用することが可能です。

shell
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) も用意されており、手軽に実行することが可能です。

shell
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 の例

index.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 の実行

shell
ec2-user:~/environment $ node index.js

セキュリティトークン

セキュリティトークンとは、信頼されている IP 範囲の外にある IP アドレスから、API を使用して Salesforce にアクセスする場合、ログインするにはセキュリティトークンが必要です。セキュリティトークンとは、パスワードに付加したり、クライアントアプリケーションの独立した項目に入力したりする、大文字と小文字を区別する英数字のコードです。例えば、データローダから Salesforce にアクセスする際に必要になったりします。API を使用する場合は、上記の通り、セキュリティトークンをパスワードに付加します。

[右上の顔のマークのアイコン]>[私のセキュリティトークンのリセット] からセキュリティトークンを再設定することが可能です。

securitytoken.png

参考:セキュリティトークンのリセット

参考:「ログイン履歴に API セキュリティトークンが必要です」の表示が出る場合の対処方法

まとめ

本稿では、Node.js 上から JSforce ライブラリを利用することで、プログラムから簡単にアクセスできることを確認しました。AWS の環境は必須ではありませんが、プログラムを色々と試すにはよいかと思います。Node.js は、JavaScript の実行環境であり、その上で動作する JavaScript のライブラリが JSforce です。Salesforce をプログラムから API 経由でアクセスするためには、セキュリティトークンも必要になります。セキュリティトークンは必要に応じて取得してください。

おわり。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?