他のテーブルの値を参照して転記する~ZOHO Creator~

備忘録記事

ZOHOクリエーターで作成したアプリで「フォーム上で別テーブルのレコードをルックアップして参照した際に、参照したレコードを元にデータを転記する」処理の方法。

事例説明

「Family」(家族)というフォーム(ZOHO CreatorではいわゆるDBの「テーブル」のことを「フォーム」と呼んでいます)と、「Personal」(個人)というフォームがある。

Familyフォーム

図のように名前と住所が登録できるようになっている。

Personalフォーム

こちらも、氏名・住所と電話番号が登録できるようになっている。また、「どの家族に属しているか?」をルックアップで選べるようになっている。(赤枠で囲った部分)

実現したいこと

Personalフォーム(個人フォーム)の入力の際に、「家族名」で家族を選んだら、登録してあるその家族の情報から「都道府県」「市区町村」の情報を取得してきて、都道府県・市区町村の枠へ入力したい。

ワークフローの設定

上記を実現するには、ワークフローの設定を行う。図のように、編集モードから「ワークフロー」→「新しいワークフロー」とクリック

新しいワークフローの設定

フォームの選択:個人フォームを編集している時なので「Personal」を選択

RecordEvent:データを作成したときか編集した時に転記したいので「作成済みまたは編集済み」を選択

タイミング:フォームで「家族」の項目を選択(入力)したタイミング、を選択

ワークフローの名前:これは後で分かるように自由に名前をつける

設定し終えたら「ワークフローの作成」ボタンをクリックして次へ進む

処理の追加

処理の追加ボタンをクリックして、新たな処理を作成し始める。

Delugeスクリプトの編集

図のようにスクリプト編集画面になるので、スクリプト(コード)を書く。

スクリプトの内容

この場合のスクリプトの内容は以下の通り

MyID = input.Family;   ・・・(1)
MyPref = Family[ID = MyID].Pref_T_Family;  ・・・(2)
MyCity = Family[ID = MyID].City_T_Family;  ・・・(3)
input.Pref_T_Personal = MyPref;       ・・・(4)
input.City_T_Personal = MyCity;       ・・・(5)

(1)行目 MyID=input.Family;

変数MyIDへ、入力項目「Family」の値を入れる(Pesronalフォームの作成の段階で、「家族を選択する」ルックアップの入力パーツに、名前を「Family」とつけてあり、ルックアップで「ID」を取得するように指定してあるため、MyIDへは選択したFamilyIDが代入される)

(2)行目 MyPref = Family[ID = MyID].Pref_T_Family;

変数MyPrefへ、Familyフォーム(ID=MyIDで指定したレコード)の、Pref_T_Family(都道府県)の値を入力。(Family[ID=MyID]と書くことで、Familyフォームの指定したレコードを読み込める。その後に「.Pref_T_Family」と指定することで指定した項目が読み込まれる

(3)行目・・・これは(2)と同様の処理で、こちらには「City」(市区町村)項目を格納する。

(4)(5) input.○○○=▲▲

○○○というフォーム上の項目へ▲▲の値を入力する。

GetRecordsではないので注意

公式リファレンスや日本語の解説記事サイトではほとんどすべて、「レコードを取得するにはGetRecordsを使う」と書かれているが、実際にやってみたらこれではエラーが起きた。(どうしてエラーなのかは不明)。

CRMやその他のZOHOアプリではGetRecordsが使えるのかもしれない。

が、Creator上でのDelugeスクリプトでは上記のようにフォーム名[抽出条件].フィールド名 で指定することで取得ができる。

備忘録記事

この記事は、弊社内で利用するために掲載した備忘録記事です。