お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の
英語版を参照してください。
概要:
クライアントは2つの異なる事業体を持ち、それぞれ異なるメールアドレスで管理されているZoho CRM 組織を利用しています。一方がもう一方の子会社となっています。取引する連絡先は共通のため、どちらかのCRM組織で連絡先が作成されるたびに、CRM AからCRM B、またはその逆に連絡先をプッシュする橋渡しとなる連携を作成したいと考えています。
例:
CRM AのSuper Adminはjohn@xyz.comであり、CRM BのSuper Adminは設定@abc.com.auです。これらは別々のユーザーですので、Zoho CRMのConnection機能を利用し、Multi Org機能を使って連絡先をプッシュすることができます。
Serverless Functionsを選択する理由:
-
エクスポート-インポートオプションも利用できますが、これは一時的な解決策として適しています。しかし、今回の場合は、連絡先がCRM Aで作成されるたびに同期されるよう、接続を有効にしておく必要があります。
-
CRMで外部連携をカスタムサービスとして作成することも可能ですが、両方のZoho CRM組織が同じデータセンターにある場合、CRM AにログインしたままCRM Bへの接続を認証することはできません。ただし、異なるデータセンターにある場合は認証が可能です。
Solution:
Zoho CRMのServerless Functionsを利用して、CRM Aのカスタム関数をトリガーし、連絡先の詳細をデータ内容として返却し、Zoho CRM Bで連絡先を作成することができます。これは、外部連携付きのカスタムサービスを作成し、さらにカスタム関数を作成するよりもシンプルな方法です。
これらをAPIエンドポイントとして利用することができ、APIキーを使用してカスタム関数からInvoke URLで呼び出すため、認証は不要です。
Zoho CRM Aでは、カスタム関数を持つワークフローを作成し、POSTメソッドとしてinvokeURL()を利用します。これは、CRM Bで単独の関数として設定されたServerless Function - APIキー方式のURLです。
Configuration / 設定:
カスタム連携を機能させるためには、両方のCRM組織でデータのプッシュと受信ができるように設定し、もう一方のCRM組織でデータの作成または更新も行えるようにする必要があります。
理解を深めるため、連絡先をプッシュする側のCRM組織を「データ元CRM」、連絡先を作成または更新する側のCRM組織を「Destination CRM」と呼びます。本例では、データ元からDestinationへの連絡先プッシュおよびDestination CRM組織での連絡先作成の設定方法を、一方向の橋渡し例として紹介します。
権限と利用可能範囲
- 「管理 Extensibility」権限を持つユーザーは、外部連携の作成やカスタム関数の作成が可能です。
- 「管理 自動化」権限を持つユーザーは、ワークフルールールの設定が可能です。
- 「管理 テスト環境」権限を持つユーザーは、テスト環境の管理やこのケースのテストが可能です。
Destination CRM 設定:
Destination CRM では、以下のサンプル Deluge スクリプトを使用してスタンドアロンカスタム関数を設定する必要があります。これにより、データ元 CRM 組織がサーバーレス関数(APIキー)を呼び出してデータの内容を渡します。
サンプルスクリプト:
- string standalone.createContfromCRMB(String requestBody)
- {
- if(isNull(requestBody))
- {
- 返品する 'いいえ Content';
- }
- else
- {
- contMap = Map();
- contMap.put('Last_Name',requestBody.取得する('Last_Name'));
- contMap.put('メール',requestBody.取得する('メール'));
- info 'contMap :' + contMap;
- dataList= List();
- dataList.追加する(contMap);
- dataMap = Map();
- dataMap.put('data', dataList);
- createRec = invokeurl
- [
- url :'https://www.zohoapis.com/crm/v7/連絡先/upsert'
- 種類 :POST
- パラメーター:dataMap.toString()
- connection:'zohocrm'
- ];
- info 'createRec :' + createRec;
- 返品する createRec;
- }
- }
カスタム関数の設定(Destination CRM):
メモ:
- スクリプト内でIfelse()が使用されており、Destination CRMのカスタム関数がデータ内容を受信しない場合、「いいえContent」というメッセージが返されます。
- 引数として、DataType値を「String」、変数名を「requestBody」として追加してください。

Serverless Function - APIキーの有効化:
サンプル記録:
これで、Endpoint URL を取得しました。この URL はカスタム関数内からワークフローに関連付けて呼び出すことができます。これは、データ元 CRM で連絡先の新規作成または編集時に、新しい連絡先を作成、または既存の連絡先を編集する際に実行されます。
データ元 CRM 設定 :
データ元(CRM A)でワークフローをカスタム関数に関連付けて設定し、その後カスタム関数スクリプトを設定します。
ワークフロー:
ワークフローを作成する必要があります。このワークフローは新規作成または編集時に実行されるため、ワークフローが有効になり、新規データの作成や既存データの更新時にデータを連携できます。
「Write your own カスタム関数」を使用して新規カスタム関数を作成します。
サンプルスクリプト:
-
詳細 = Map();
-
詳細.put('Last_Name',lname);
-
詳細.put('メール',cemail);
-
requestBody = Map();
-
requestBody.put('requestBody',詳細);
-
contMap = Map();
-
contMap.put('arguments',requestBody);
-
info 'contMap :' + contMap;
-
pushCRM_B = invokeurl
-
[
-
-
種類 :POST
-
本文:contMap
-
];
-
info 'pushCRM_B :' + pushCRM_B;
メモ:
- 引数を追加して、ワークフロー実行時にデータから値を取得してください。下記のスクリーンショットに表示されているサンプル引数を参照できます。
- マッピングには、Destination CRMで連絡先作成時に送信したいデータ値を必ず含めてください。
- ワークフローから取得した値に基づき、Invoke URLのデータ内容でマッピングするための引数を追加してください。
- 設定する引数が10個を超える場合は、データIDを渡し、getRecordbyId()を使用して連絡先を取得し、連携タスクのレスポンスから値をマッピングしてください。
引数マッピング:
動作デモ:
下記の録画では、両方のZoho CRM組織での設定、データ元での連絡先作成、そしてServerless Functionとカスタム関数を用いた自動化により、Destinationで連絡先がシームレスに作成される流れをご確認いただけます。
このプロセスはデータ元CRMからDestination CRMへの連絡先の一方向同期となるため、連絡先を戻す場合は、必要な修正を加えて手順を逆に設定してください。
メモのポイント:
- 上記のDelugeスクリプト内で、必要な項目API名とマッピングを含め、項目値を作成する連絡先にマッピングしてプッシュしてください。
- カスタム関数スクリプト内でAPI通話を行う際は、ご自身のドメイン固有のZoho APIエンドポイントURLに必ず変更してください。
- スクリプト内で、正しいAPI名をタブ&項目の両方で使用していることを確認してください。
- 意図した出力が得られているか確認するため、Zoho CRM Function IDEのコンソールセクションで各変数の出力をチェックできるよう、info()ログの利用を推奨します。
- 関数スクリプト内で外部連携を使用しているため、意図したAPI操作を実行するには必須スコープを接続に追加していることを確認してください。また、Deluge Invoke URLまたはIntegrationタスクに渡す際は外部連携のリンク名(例:crm_connection)を使用してください。
- 一般的な例としてUS DCのAPIエンドポイントを使用していますが、異なるDC(例:IN、EU、CA、AUなど)のCRMアカウントをご利用の場合は、お使いのDCに合わせたAPIエンドポイントURLを利用することを推奨します。
例:
US DC - 'https://www.zohoapis.com/crm/v2/商談/' + dealRecordID + '/添付ファイル/' + attachementIdList.取得する(i)
IN DC - 'https://www.zohoapis.in/crm/v2/商談/' + dealRecordID + '/添付ファイル/' + attachementIdList.取得する(i)
EU DC - 'https://www.zohoapis.eu/crm/v2/商談/' + dealRecordID + '/添付ファイル/' + attachementIdList.取得する(i)
- 自動化機能(例:ワークフルールール)がこの使用ケースに関与しているため、意図した機能が動作しない場合は、ユーザーは関連付け済みの機能失敗理由を『設定 >> Developer Hub >> Functions >> 失敗』から確認できます。また、ユーザーは特定の作成済み関数に対してすべての関数実行の完了ログも追跡できます(つまり、My Functions >> 3点リーダー >> ログで確認可能)。この方法は、CRMデータのワークフルールール経由で関数が実行されたものの、データに対して意図した処理や更新が反映されなかった場合のシナリオでも役立ちます。このような場合、Zoho CRM内の関数ログから出力(情報ログ)や実行時のエラーを確認できます。
次のガイド記事を参照し、コード最適化のベストプラクティスおよびZoho CRM全体でカスタム関数を展開するさまざまな方法をご確認ください。