備忘録記事
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スクリプトでは上記のようにフォーム名[抽出条件].フィールド名 で指定することで取得ができる。
備忘録記事
この記事は、弊社内で利用するために掲載した備忘録記事です。
コメントを投稿するにはログインしてください。