カスタム関数のプログラミング
Deluge(Data Enriched Language)は、Zoho Creatorと連携してオンラインで利用できるスクリプト言語です。カスタム関数にさまざまな種類のビジネスロジックを追加して、より強力にすることができます。データベースレイヤー全体が抽象化されており、Delugeでスクリプトを作成しながら、引数を項目に関連付けするだけで利用できます。Delugeスクリプト - リファレンスガイドも参照してください。
対象者
- ワークフロー管理権限を持つCRMユーザー
- Delugeスクリプトの知識を持つプログラマー
利用条件
カスタム関数のプログラミング
Delugeスクリプトを使用してカスタム関数をプログラミングするには、次の3つの手順を実行してください。
- カスタム関数をプログラミングする。
- カスタム関数をワークフローに関連付ける。
- カスタム関数の連携をテストする。
カスタム関数をプログラミングするには
- [設定] > [自動化] > [処理] > [カスタム関数]に移動してください。
- [ワークフローのカスタム関数]ページで、[カスタム関数の設定]をクリックしてください。
- [カスタム関数の設定]ページで、[独自の関数の記述]リンクをクリックしてください。
- [カスタマイズされた関数]ページで、次の手順を実行してください。
- 関数の名前と詳細を入力してください。
- 関数に関連付けるタブを選択し、[引数の編集]リンクをクリックしてください。
- CRMタブで、引数を項目名またはカスタム値に関連付けてください。
- [完了]をクリックしてください。
- Delugeスクリプトエディターで必要な関数を記述してください。[スクリプトの保存と実行]をクリックして、コードを検証してください。
エラーがない場合は、スクリプトをワークフローに関連付けることができます。 - [保存]をクリックしてください。
- [設定] > [自動化] > [ワークフロー]に移動してください。
- [ワークフロー]ページで、[ルールの作成]をクリックしてください。
- [新規ルールの作成]タブで、ワークフローのパラメーターを指定します。
- [すぐに実行する処理]の下の[カスタム関数]を選択してください。
- 次に、トリガーするカスタム関数を選択してください。
- [保存]をクリックしてください。
- ワークフローの条件に従って、CRMにテストデータを追加してください。
- アプリケーションで、カスタム関数を介してZoho CRMから受信したデータを確認してください。
- エラーまたはデータの不一致がある場合は、Zoho CRMでカスタム関数コードを変更してください。
- Zoho CRMからアプリケーションに必要なデータを取得するまで、このテストを続けてください。
重要事項
- ワークフローごとに、最大6件(1件のすぐに実行する処理と5件の時間基準の処理)のカスタム関数を関連付けることができます。
- カスタム関数を使用して、Zoho CRMから外部サービスアプリケーションに最大10件のCRM項目のデータを転送できます。
- カスタム関数を使用して、他のアプリからZoho CRMにデータを取得できます。
- APIの認証情報は、外部サービスのアプリケーションの制限に従って定期的に更新する必要があります。
- 外部サービスAPIの問題によりカスタム関数の連携が機能しなくなった場合、メール通知は受信されません。
- プロセスに障害が発生した場合、カスタム関数は最初に通知を送信し、Zoho CRMシステムは15分後に2回目の通知を送信します。その後、システムはその特定のワークフローの実行に関する通知を送信しません。
- 1日あたりの最大数を超えた場合、システムは残りのカスタム関数による通知を外部サービスアプリケーションに送信せず、障害を管理者に通知します。
- Zoho CRMは、[日付]項目と[日時]項目の次の標準形式データを外部サービスアプリケーションに送信します。
- 日付:yyyy-MM-dd
- 日時:yyyy-MM-dd hh:mm
Delugeスクリプトビルダーについて
Delugeスクリプトビルダーは、ドラッグアンドドロップのユーザーインターフェイスを使用してカスタム関数をプログラムし、CRM内でその関数を実行するのに役立ちます。これで、Delugeスクリプトの構文と関数を覚えることなく、複雑なアプリケーションロジックをかんたんなDelugeコードに変換できます。次の項目から構成されます:
- Delugeスクリプトコード
- Delugeタスク
- 条件
- その他
- デバッグ
- リスト操作
- マップ操作
- Webデータ
- XML操作
- コード実行
Delugeタスクのリスト
Delugeタスク | 目的 |
条件 | |
その他 | |
デバッグ | |
リスト操作 | |
マップ操作 | |
Webデータ | |
XML操作 |
例
利用例:商談のステータスが「受注」の場合に、関連する取引先の項目で集計します。
概要
対象の取引先に関する各商談(ステータスが受注)の総額の合計を算出し、対象の取引先の売上の項目(カスタム項目)に反映します。例えば顧客が10回購入した場合に、商談と取引先を関連付けたレポートを作成しなくても、[取引先]ページですぐに総売上を表示できます。顧客からの売上に基づいて、A、B、Cなどで顧客をランク分けすることができます。
プログラミング手順
void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField)
- voidは何も返さない戻り値の型です
- workflowspaceは、作成者の名前空間で、フォルダーのように関数をグループ化するのに役立ちます。
- Rollup_the_Potential_Amount_to_Accountsは関数の名前です。
- AccountIdは、CRM内のアカウントのIDを保持するパラメーターです。
- SumUpFieldは別のパラメーターであり、ワークフローの起動時に合計金額が更新される取引先のの項目のラベルを表します。
{ accountID1 = (input.AccountId).toString();
- 取引先IDを文字列に型変換しています。
resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);
- これはDelugeスクリプトの標準メソッドで、項目値を検索してデータを取得できます。
- ここでは、パラメーターとして渡される取引先IDの値と一致する商談の種類のデータを検索するように指定しています。
total = 0.0;
- ローカル変数を初期化して金額の合計を計算します。
for each rec in resp
- 上記のメソッド呼び出しによって返されたすべての商談を反復処理します。
{
stage = (rec.get("Stage")).toLowerCase();
- 各商談のステージの項目の値を取得します。
if (stage.contains("受注"))
- 各商談のステージの値に「受注」を含むかをチェックします。trueの場合、次の行に入り、それ以外の場合は、次の商談に移動します。
{
total = (total + (rec.get("Amount")).toDecimal());
- 次に、金額項目の値をローカル変数に追加します。
} }
updateResp = zoho.crm.updateRecord(("Accounts"), accountID1, { input.SumUpField : total });
}
- このメソッドにより、CRMのデータが更新されます。対象のデータの種類は取引先とし、パラメーターとして指定したIDに合致するデータの値を更新するようにしてします。
プログラムの完了
void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField)
{
accountID1 = (input.AccountId).toString();
resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);
info resp;
total = 0.0;
for each rec in resp
{
stage = (rec.get("Stage")).toLowerCase();
if (stage.contains("won"))
{
total = (total + (rec.get("Amount")).toDecimal());
}
}
updateResp = zoho.crm.updateRecord(("Accounts"), accountID1, { input.SumUpField : total });
}
利用例2:商談のステータスが「受注」の場合に、関連する取引先の項目で集計します。
概要
対象の取引先に関する各商談(ステータスが受注)の総額の合計を算出し、対象の取引先の売上の項目(カスタム項目)に反映します。例えば顧客が10回購入した場合に、商談と取引先を関連付けたレポートを作成しなくても、[取引先]ページですぐに総売上を表示できます。顧客からの売上に基づいて、A、B、Cなどで顧客をランク分けすることができます。
プログラミング手順
void workflowspace.Rollup_the_Potential_Amount_to_Accounts(int AccountId, string SumUpField)
- voidは何も返さない戻り値の型です
- workflowspaceは、作成者の名前空間で、フォルダーのように関数をグループ化するのに役立ちます。
- Rollup_the_Potential_Amount_to_Accountsは関数の名前です。
- AccountIdは、CRM内の取引先のIDを保持するパラメーターです。
- SumUpFieldは別のパラメーターであり、ワークフローの起動時に合計金額が更新される取引先のの項目のラベルを表します。
{ accountID1 = (input.AccountId).toString();
- 取引先IDを文字列に型変換しています。
resp = zoho.crm.searchRecordsByPDC("Potentials", ("accountid"), accountID1);
- これはDelugeスクリプトの標準メソッドで、項目値を検索してデータを取得できます。
- ここでは、パラメーターとして渡される取引先IDの値と一致する商談の種類のデータを検索するように指定しています。
total = 0.0;
- ローカル変数を初期化して金額の合計を計算します。
for each rec in resp
- 上記のメソッド呼び出しによって返されたすべての商談を反復処理します。
{
stage = (rec.get("Stage")).toLowerCase();
- 各商談のステージの項目の値を取得します。
if (stage.contains("受注"))
- 各商談の「受注」を含むステージ値をチェックします。trueの場合、次の行に入り、それ以外の場合は、次の商談に移動します。
{
total = (total + (rec.get("Amount")).toDecimal());
- 次に、金額の項目の値をローカル変数に追加します。
void workflowspace.Mass_update_of_Child_Contacts(int accId) { accountId = input.accId.toString();
rec = zoho.crm.getRecordById(("Accounts"), input.accId);
resp = zoho.crm.getRelatedRecords("Contacts", ("Accounts"), accountId);
for each ele in resp { mp = map();
mp.put("Mailing Street", rec.get("Billing Street"));
mp.put("Mailing City", rec.get("Billing City"));
mp.put("Mailing State", rec.get("Billing State"));
mp.put("Mailing Zip", rec.get("Billing Code"));
mp.put("Mailing Country", rec.get("Billing Country"));
mp.put("Other Street", rec.get("Shipping Street"));
mp.put("Other City", rec.get("Shipping City"));
mp.put("Other State", rec.get("Shipping State"));
mp.put("Other Zip", rec.get("Shipping Code"));
mp.put("Other Country", rec.get("Shipping Country"));
contactId = ele.get("CONTACTID"); updateResp = zoho.crm.updateRecord("Contacts", contactId, mp);
}
カスタム関数を設定するには、次の手順に従ってください。
- Zoho CRMにサインインしてください。
- [設定] > [自動化] > [ワークフロー]に移動してください。
- [タブ]一覧から[商談]を選択してください。ワークフローの名前と説明を入力してください。
- このルールを実行するタイミングを選択してください。データ処理に基づく実行の下の[作成または編集]オプションを選択してください。
- [完了]をクリックしてください。
- ルールを実行するデータを選択してください。[条件に一致するデータ]オプションを選択し、条件に「Stage contains 受注」と設定してください。
- [完了]をクリックしてください。
- 次に、[すぐに実行する処理]として[カスタム関数]を選択してください。
- [カスタム関数の設定]ポップアップで、[カスタマイズされた関数]のリンクをクリックしてください。
- [カスタマイズされた関数]ページで、[商談の金額を取引先に関して集計]関数の[設定]をクリックしてください。
- タブとして[商談]を選択してください。
- 下記のように引数の値を指定してください。
- AccountId:項目のリストから「AccountId」列を選択してください。
- SumUpField:取引先タブにある集計用の項目を指定してください。
- [カスタム値を入力]のリンクをクリックして、項目名を入力してください。
- 設定を保存します。これで、対象の取引先に関するすべての商談を通じて発生した売上の合計が自動的に更新されます。