クライアントスクリプト:Zoho CRMのブループリント遷移中にサブフォームのバリデーションを強制する
お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の
英語版を参照してください。
Requirement 概要
Zoho CRM では、商談データがBlueprintに含まれている場合、ユーザーはサブフォームに追加されたエントリーを認証し、Blueprintの遷移で完了済みにする前に確認する必要があります。
権限 & 利用可能範囲
-> 管理 Extensibility 権限を持つユーザーは、Client Scriptの設定・管理が可能です。
-> 管理 自動化 権限を持つユーザーは、Blueprintの設定・管理が可能です。
-> 管理 テスト環境 権限を持つユーザーは、テスト環境の管理が可能です。
-
Client Scriptのさまざまな配置場所
例:
-> ページのOn_Load/On_Save/On_Edit、項目のOn_Type/On_Change、サブフォーム処理、Blueprint処理、リスト表示処理 など。
-> コマンド・ショートカットキー(CRM内のどこからでもいつでもスクリプトを実行可能)。
-> カスタムボタン(最近の機能拡張)
詳細については、以下のヘルプ参照をご覧いただき、Client Script処理 詳細をご確認ください。
-
Client Scriptの作成方法:
Client Scriptは、2通りの方法で追加できます。
1. 設定ページから追加:
Zoho CRM の設定(⚙️)>> Developer Hub >> Client Script >> 新規Script へ進みます。
-> スクリプトに適した名前と説明を入力してください
-> カテゴリー 詳細-
- 要件に応じてカテゴリーを選択します。タブ - 処理でトリガー || Commandsでコマンドパレット/ショートカットキーからトリガーされます。
- スクリプトを追加するタブを選択します。例:リード、連絡先など
- 特定のページにスクリプトを適用するためにPageを選択します。例:作成、編集、複製、詳細、リストなど
- Layoutを選択します。例:スタンダードまたはカスタムレイアウト
-> Event 詳細-
処理の種類を選択します - 項目イベント、ページイベント、サブフォームイベント
- 項目イベント-> 項目とイベントを選択します(例:名項目のonChange)。
- ページイベント-> ページとイベントを選択します(例:作成ページのonLoad)。
- サブフォームイベント-> サブフォームとイベントを選択します(例:onCellChange)。
2. 詳細/List/作成/編集/複製 ページからタブ内のデータに対して追加
-> Zoho CRMで目的のタブを選択し、そのタブ内のデータでList、作成、詳細、編集、または複製ページを開きます。例として、作成 Lead ページを参照します。
-> 作成/編集/複製ページの場合 - ページの最右端にある「Client Script」をクリックし、スクリプトを追加します。
-> カテゴリー 詳細はシステムによって自動入力されます。クライアントスクリプトの名前、説明、イベント詳細など、その他の詳細を入力してください。その後、「次へ」をクリックし、Client Script IDEのコードエディターにスクリプトを追加します。最後に「保存」と「閉じる」をクリックします。
詳細ページからClient Scriptを追加する方法:
List/作成/編集/複製などのページからClient Scriptを追加する方法:
使用例
ユーザーは営業法人を持ち、営業担当者は商談タブ内のサブフォームを利用して、顧客から興味のある商品の情報を収集します。商談をクローズする前に、法人ではサブフォーム内のすべての列が正しく更新されている必要があります。
例:例えば、顧客がAC向けのサービスプラン購入に興味を示した場合、法人ではサブスクリプションモデル、次回の更新日、このプランが販売済みかどうかなどの情報が必要です。これらの情報はすべて、サブフォーム内で個別の列として管理されています。
法人はブループリントを活用して業務プロセスを定義していますが、サブフォームの項目はブループリントの一部として検証されていません。このため、業務フローを効率化する上で課題となっています。
解決方法:この課題に対応するため、クライアントスクリプトを活用することができます。クライアントスクリプトのコードは、ブループリントイベントに基づいて実行され、ブループリントの遷移を進める前にサブフォームの入力内容を検証します。
設定
それでは、クライアントスクリプトを詳細ページ上の商談タブのブループリントイベント(beforeTransitionトリガー)に作成します。例えば、ユーザーがデータ詳細表示ページでブループリント遷移をクリックすると、設定されたクライアントスクリプトが遷移を進める前に実行されます。
コード
- console.クリア();
- console.log(transition.名前);
- //ブループリントから特定のtransition 名前を渡す
- if (transition.名前 == '2') //クライアントスクリプトをトリガーさせたいtransition 名前に応じて2を置き換えてください
- {
- //現在のデータIDを取得
- var id = $Page.record_id;
- var dealdetails = ZDK.Apps.CRM.商談.fetchById(id);
- console.log(dealdetails);
- //現在データのサブフォームデータを取得
- var subfrom = dealdetails.subscription_info;
- console.log(subfrom);
- val = '';
- msg = '';
- //サブフォームデータをループ処理
- for (var i = 0; i < subfrom.length; i++)
- {
- //各サブフォーム項目データを取得
- var soldandunsold = subfrom[i].Sold_or_unsold;
- var subscription_model = subfrom[i].subscription_model;
- var datefield =subfrom[i].Next_Renewal_date;
- var pd = subfrom[i].product_name;
- if (soldandunsold == 'Unsold' && (subscription_model != null || pd != null || datefield != null))
- {
- val = 'はい';
- msg = 'サブスクリプション情報 for Sold は空であってはなりません';
- }
- else if(soldandunsold == 'Sold' && (subscription_model == null || pd == null || datefield == null))
- {
- val = 'はい';
- msg = 'サブスクリプション情報テーブルを完了してください';
- }
- }
- //サブフォームデータの結果に基づき、データ内で処理を行います
- console.log(val);
- if(val == 'はい')
- {
- ZDK.Client.showAlert(msg);
- 返品する 無効;
- }
- else
- {
- 返品する 真;
- }
- }
コード解説
-> スクリプトは、特定のtransition 名前を渡すことでtransition 名前とIF 条件を取得し、クライアントスクリプトがIF 条件ブロックに入力して必須の操作を実行できるようにします。
-> 次に、IF 条件内で現在のデータおよびデータのサブフォームデータを取得します。
-> その後、サブフォームデータを繰り返し処理し、以下の基準を認証します。
基準1:
Sold/Unsold 項目が「Unsold」と等しい
サブスクリプション Model 項目が空でない
Renewal 項目が空でない
パターン - (1 AND (2 OR 3))
基準2:
Sold/Unsold 項目が「Sold」と等しい
サブスクリプション Model 項目が空である
Renewal 項目が空である
パターン - (1 AND (2 OR 3))
基準3:
上記に該当しない場合は、データのさらなるtransitionを続行します。
-> データのサブフォームデータが基準1または2に該当する場合、設定されたメッセージ付きの注意ポップアップが表示されます。
-> ユーザーは詳細ページ(Canvas表示)でも同様の設定を行うことができます。
-> また、複数のサブフォームデータに対してこの設定を適用し、複雑な法人バリデーションを実現することも可能です。
TIPS
-> スクリプト内で 正しい API Namesを両方 タブ & 項目に対して使用することを確認してください。
-> スクリプト作成時は、各変数ごとに logs() または console.log()を追加して、出力を確認しスムーズに動作するか検証することを推奨します。つまり、出力を 'Messages'タブ(Client Script IDE内)で各logs() 実行結果として表示できます。consoleログを表示するには、次の手順に従ってください - 「ブラウザページ上で右クリック >> 検証 >> Console」
-> 期待する機能が動作しない場合は、各出力やループを検証しながらスクリプトを試し、さらに各ZDK Client/CRM API メソッドの構文を提供されているサンプルヘルプドキュメントでクロス認証してください。
各 ZDK クライアント/CRM API メソッドのサンプルスクリプト- ヘルプ 参照
円滑な 導入のため、設定の構成およびテストはテスト環境で行い、本番環境へ展開する前にご確認いただくことを推奨します。