【前提】
Salesforceアカウントを持っている
SalesforceのAPI利用が可能(今回はトライアルで試してみます。)
Node-REDがインストールされている
Node-REDはRaspberry PiでもWindowsでも構いません。
1. Salesforce で「接続アプリケーション」を作成(API連携設定)
- Salesforceへ管理者ユーザーでログイン
- 右上の歯車アイコン > [設定] を開く
- [アプリケーション] > [アプリケーションマネージャ]
- 「新規接続アプリケーション」を作成
- 名前:Node_RED(任意)
- API有効化(OAuth設定)
- コールバックURL:
http://localhost:1880/callback
(Node-REDで使うURL。仮でOK) - OAuth範囲:
full
またはapi
を選択
- コールバックURL:
- Consumer Key と Consumer Secret を控える
- セキリュティトークンの確認
- Salesforceでは、APIアクセスや外部アプリ(Node-RED、Outlookなど)からの接続時に、
通常のログインパスワードだけではログインできません。
追加の認証要素として「セキュリティトークン」という文字列が発行されます。
【使い方】
1. 通常のSalesforceログイン(ブラウザ等)
ユーザーIDとパスワードだけでOK
2. 外部アプリからSalesforce APIへ接続する場合
「パスワード」の後ろにセキュリティトークンを付けて1つのパスワードとして使う必要があります。
例
あなたのパスワードがPassword123
セキュリティトークンがa1b2c3d4e5f6g7h8
この場合、Node-REDやAPI設定画面ではPassword123a1b2c3d4e5f6g7h8
と連結したものを「パスワード」欄に入力します。
【セキュリティトークンの発行・確認方法】
Salesforceにログイン(ブラウザで)
右上の自分のアイコン→「設定」
「私の個人情報」→「私のセキュリティトークンのリセット」
メールでトークンが送信される
※一度リセットすると、古いトークンは使えなくなります
- Salesforceでは、APIアクセスや外部アプリ(Node-RED、Outlookなど)からの接続時に、
- SalesforceではOAuth「ユーザー名+パスワード」認証フローを有効化
- ログイン履歴を確認して、ログイン履歴の「状態」に「ユーザー名+パスワードのフローが無効になっています」と表示されていれば無効になっています。
- 【この意味】
SalesforceではOAuth「ユーザー名+パスワード」認証フローは、組織設定で無効化されている場合があります。
つまり、現在の認証フロー(Resource Owner Password Credentials Grant)が許可されていないため、認証自体がブロックされています。 - 【よくある背景】
Salesforceはセキュリティ強化のため、2022年以降、
「ユーザー名+パスワード」OAuthフロー(Resource Owner Password Credentials Grant)をデフォルトで無効化しています。 - 【対策方法】
【A案】管理者に「認証フロー有効化」を依頼
Salesforce管理者で行います 上の検索欄に
「OAuth設定」>「ユーザー名+パスワード認証フロー」を有効化してください。
[設定] > [アプリケーション] > [アプリケーションマネージャ] > [接続アプリ](Node-RED連携用)
> 「ポリシー」タブの「OAuth許可フロー」→「ユーザー名+パスワードフローを許可」
これで「ユーザー名+パスワード」認証が許可されます。



2. Node-REDにSalesforceノードをインストール
Node-REDの「パレットの管理」から
node-red-contrib-salesforce
を検索してインストール
1. soql ノード
役割: Salesforceの「SOQL(Salesforce Object Query Language)」でレコードを検索・取得するノード。
使い方:
- ノード設定でSOQLクエリを指定
例:SELECT Id, Name FROM Contact LIMIT 2
- または、
msg.query
にクエリ文字列をセットして渡す
出力: 検索結果(配列)をmsg.payload.records
に格納
2. sosl ノード
役割: Salesforceの「SOSL(Salesforce Object Search Language)」でキーワードによる横断検索を実行するノード。
使い方:
- ノード設定 or
msg.query
でSOSLクエリを指定
例:FIND {united*} IN ALL FIELDS RETURNING Account (Id, Name), Contact (Id, Name)
出力: 結果配列をmsg.payload.records
に格納
3. obm ノード
役割: Salesforceの「Outbound Message」(外部通知・ワークフローでSalesforceから送信されるXMLメッセージ)をJSONに変換するノード。
使い方:
- Node-RED側の
http in
ノード(POSTエンドポイント)に続けて設置 - Salesforce側でOutbound MessageのエンドポイントURLとしてNode-REDのURLを設定
- SalesforceからPOSTされたXMLデータをJSONに変換して
msg.payload
に格納
4. chatter ノード
役割: Salesforceの「Chatter(社内SNS/フィード)」に投稿を行うノード。
使い方:
msg.payload
に投稿したいテキストやタイトル、親オブジェクトIDなどを指定- 例:
msg.payload = "Hello World"; msg.title = "タイトル"; msg.ParentId = "取引先ID";
5. dml ノード
(Data Manipulation Language)
役割: Salesforceのデータ操作(Insert/Update/Upsert/Delete)を実行するノード。
使い方:
- ノード設定、または
msg.action
(insert, update, upsert, delete)とmsg.object
(オブジェクト名)で動作指定 - 操作するデータは
msg.payload
にセット
例:
- Insert
msg.action = "insert"
msg.object = "Contact"
msg.payload = { firstname: "Nikola", lastname: "Tesla" }
- Update
msg.action = "update"
msg.object = "Contact"
msg.payload = { id: "00337000002uFbW", firstname: "Nikola", lastname: "Tesla" }
- Delete
msg.action = "delete"
msg.object = "Contact"
msg.payload = { id: "00337000002uwUVAAY" }
6. streaming ノード
役割: Salesforceの「ストリーミングAPI」や「PushTopic」「Platform Event」などにサブスクライブし、リアルタイムでレコード変更等のイベントをNode-REDで受信するノード。
使い方:
- サブスクライブ先を
msg.topic
で指定(例:/topic/MyPushTopic
) - イベントを受信すると
msg.payload
に内容が入る
参考:基本フローの組み方
たとえば、「新しいContactを登録する」場合は[ inject ] → [ function ] → [ dmlノード ]
のようにして、functionノードで下記のようにセットします。
msg.action = "insert";
msg.object = "Contact";
msg.payload = {
firstname: "Nikola",
lastname: "Tesla"
};
return msg;
そして、dmlノードに渡します。
ノードまとめ
ノード | 機能・用途 | 設定・msgで指定する主な内容 |
---|---|---|
soql | SOQL検索でレコード取得 | msg.query |
sosl | SOSL横断検索でレコード取得 | msg.query |
dml | Insert/Update/Delete/Upsert等レコード操作 | msg.action , msg.object , msg.payload |
streaming | ストリーミングAPIによるイベント受信 | msg.topic |
obm | Outbound MessageのXMLをJSONに変換 | http inノード直後に配置 |
chatter | Chatterフィードに投稿 | msg.payload , msg.title , msg.ParentId |
3. Salesforceノードをフローに追加・認証情報を設定
- Node-REDエディタで「Salesforce」ノード(例えば「Salesforce In」「Salesforce Out」など)をフローにドラッグ
- ノードをダブルクリックして「新しいSalesforce認証」設定
- Consumer Key
- Consumer Secret
- Username(SalesforceのログインID)
- Password(パスワード+セキュリティトークン)
- Login URL(通常は https://login.salesforce.com )
(Salesforce「設定」→「マイパーソナル情報」→「セキュリティトークンのリセット」)
それぞれのノードについて簡単に用途とできることを解説します。
(node-red-contrib-salesforce に含まれる主なノードです)
コメント