ルックアップ経由で関連レコードのフィールドを再帰的に更新する関数の呼び出し方法

ルックアップ経由で関連レコードのフィールドを再帰的に更新する関数の呼び出し方法

お知らせ:当社は、お客様により充実したサポート情報を迅速に提供するため、本ページのコンテンツは機械翻訳を用いて日本語に翻訳しています。正確かつ最新のサポート情報をご覧いただくには、本内容の英語版を参照してください。

要件

ルックアップ項目で確立された連結をたどりながら、リンクされたレコードの系列を再帰的に更新する関数を実装します。

ユースケース

Zoho Creator のタスク管理アプリケーションを想定します。ここでは、タスク依頼は「新規」または「再開」のいずれかに分類されます。新規タスクは、追加する タスクフォームでタスクの詳細を直接入力して作成します。一方、再開タスクは、以前にオン Holdになっていたタスクにリンクされます。このリンクは、同じフォーム内のルックアップ項目を使用して行います。これにより、再開タスクも再度オン Hold にしたり、繰り返し再開したりできるため、リンクされたタスクのチェーンが作成されます。チェーン内の最新のタスクが完了に設定されると、ルックアップ項目を介してチェーンをたどる再帰関数が実行され、最初のオン Holdタスクを含む、リンクされたすべてのタスクのステータスが完了に更新されます。これにより、関連するすべてのタスクでステータスが正確かつ一貫して更新されます。
動作を確認する

手順

  1. タスクの詳細を保存するため、次の内容でフォームを作成します。

    フォーム

    フォームリンク名

    項目タイプ

    項目名

    項目リンク名

    追加する タスク

    Add_Task

    ラジオボタン

    タスクカテゴリー

    • 新規タスク

    • オン Hold 中のタスクを再開

    Task_Category

    単一行

    タスク件名

    Task_Title

    ルックアップ(Add_Task)

    タスクを再開

    Reinitiate_Task

    ドロップダウン

    タスクステータス

    • Started(初期設定)

    • オン Hold

    • Reinitiated

    • 完了 

    Notes
    メモ:Startedオプションの横にあるラジオボタンをクリックし、項目プロパティで初期設定として設定します。

    Task_Status

  2. 項目プロパティでタスクを再開ルックアップ項目のフィルターを設定オプションをクリックし、フィルターを設定してオン Holdのタスクのみが表示されるようにします。

  3. 項目にタスクステータス、演算子にequals、選択肢にオン Holdを選択します。

  4. Deluge 関数を作成し、戻り値の種類に無効を選択し、Record_IDという名前でintデータタイプの引数を指定します。関数名は「Recursion」とします。この関数はワークフローから実行され、再帰的に呼び出されて、関連付けられた再開タスクのステータスを取得および更新します。

  5. Deluge エディターに次のスクリプトを追加します。
    1. 無効 Recursion(int Record_ID)
    2. {
    3. //Fetch引数で渡されたレコード ID に一致するレコードを取得します。
    4. fetch_records = Add_Task[ID == Record_ID];
    5. //取得したレコードのタスクステータスを完了に更新します。
    6. fetch_records。Task_Status='完了';
    7. //関数を再度呼び出し、関連付けられた再開タスクを取得して、そのステータスを完了に更新します。
    8. if(fetch_records。Task_Category == 'オン Hold 中のタスクを再開')
    9. {
    10. thisapp。Recursion(fetch_records。Reinitiate_Task);
    11. }
    12. }
  6. フォームワークフローを作成し、追加する タスクフォームの送信が正常に完了したときに実行されるように設定します。レコードイベントとして「作成 or 編集」を選択し、ワークフロー名を「Update_Status」としてワークフローを作成をクリックします。このワークフローは、再開タスクのステータスと、関連付けられたタスクのステータスを更新します。

  7. Add 新規 操作 > Deluge Scriptをクリックし、Deluge エディターに次のスクリプトを追加します。
    1. //保留中のタスクが再開された場合、再開されたタスク データと、そのタスクに関連付けられている保留中タスクタスク ステータスを更新します。
    2. //保留中タスクを再開するための新規タスク データを作成したとき。
    3. if(Task_Category == 'Reinitiate タスク オン hold' && Task_Status == 'Started')
    4. {
    5. input。Task_Status = 'Reinitiated';
    6. //再開タスクのタスク 件名を、関連付けられている保留中タスクの件名で更新します。
    7. input。Task_Title = input。Reinitiate_Task。Task_Title;
    8. fetch_records = Task_Request[ID == input。Reinitiate_Task];
    9. fetch_records。Task_Status='Reinitiated';
    10. }
    11. //再開されたタスクのステータスが完了に変更された場合、Recursionカスタム関数をトリガーして、関連付けられているすべての再開タスク データを「完了」に更新します。

    12. //再開されたタスクのステータスを完了に変更したとき。
    13. if(Task_Category == 'Reinitiate タスク オン hold' && Task_Status == '完了')
    14. {
    15. //Recursion 関数を呼び出します
    16. thisapp。Recursion(input。ID);
    17. }

動作を確認する


  1. call 関数
  2. レコードの取得