見出し画像

AppSheet実践編シリーズ②~EnumとEnumListで他のテーブルの値を参照する(基本とちょい応用)~

はじめに

 こんにちは。ソシオネットのS@Appsheet勉強中です。

 昨年に以下のようなSalesforce関連の記事を投稿してから、約8か月ぶりの投稿です。
 先日同僚のNさんが書いたAppsheetの記事がとても評判がよかったので、二匹目のどじょうを狙って私もAppsheetについて書いていこうと思い立ちました。
 待っていてくれた人(待っていなかった人も?)、長らくお待たせしました!

 とはいえ、いつも通りの小ネタ集ですので、肩に力を抜いてお読みくださいませ。なお、私は絵心がないので、トプ画は適当なフリー素材です。


Enum型とEnumlist型について

 そもそもEnum型やEnumlist型とは何でしょうか?
 Enum型やEnumlist型はAppsheetで指定できるデータ型の種類の1つです。

  • Enum型:選択肢の中から1つ選択できる。 ※ラジオボタンをイメージするとわかりやすい。

  • Enumlist型:選択肢の中から複数選択できる。 ※チェックボックスをイメージするとわかりやすい。

 選択肢はあらかじめアプリの中で決めておくこともできますし、他のテーブルから値を取得することもできます。今回は他のテーブルから値を取得する場合の、基本的な設定とちょっとしたテクニックを紹介します。

今回説明したい事とシナリオ

 改めまして、今回のテーマは「EnumとEnumListで他のテーブルの値を参照する」です。説明したいこと以外の要素を排除したいため、以下の簡単な2つのテーブルをスプレッドシートで用意しました。

・「報告会」テーブル
 報告会が開催されるごとに、テーマ(Text)と発表者(Enum)、参加者(Enumlist)を登録することを想定したテーブルです。
 発表者(Enum)と参加者(Enumlist)は、「従業員マスタ」テーブルから取得する想定です。
・「従業員マスタ」テーブル
 社員名と部署があるだけの簡単なマスタテーブルです。
 ※説明の便宜上、最初から上記のデータが存在している状態でAppsheetに食べさせます

そして、今回説明したい基本テクニックは以下の3点です。

  1. 【超基本】発表者と参加者を「従業員マスタ」テーブルから取得する

  2. 【応用その1】発表者と参加者をコンサルティング部の人のみに限定する

  3. 【応用その2】発表者の人は参加者に登録できないように動的に制御する

では、早速見ていきましょう!

発表者と参加者を「従業員マスタ」テーブルから取得する

 発表者について、以下の図の通り設定をしていきましょう。

  • Type:Enum

  • Base Type:Ref

  • Base Type>Referenced table name:従業員マスタ

 さらに、忘れがちな以下の設定を追加します。

  • Auto Compute>Suggested values:従業員マスタ[id]

発表者と参加者を「従業員マスタ」テーブルから取得するための設定

 この設定により、無事に従業員マスタから値を取得することができました。
 なお、Suggested valuesを従業員マスタ[id]と設定しても、従業員マスタのLABELチェックボックスを社員名にチェックすることにより、以下の図の通り、表示されるリストにはidではなく社員名が表示されます。
 また、参加者についてはTypeがEnumlistに変わるだけで、他の部分は同じように設定すればOKです。

発表者も参加者も、従業員マスタの全量が表示できました

発表者と参加者をコンサルティング部の人のみに限定する

 さて、応用その1です。
 ここでは以下のようにFilter関数を使って、要件を満たしていきます。

  • Data Validity>Valid if:filter("従業員マスタ",[部署]="コンサルティング部")

発表者と参加者をコンサルティング部の人に限定するための設定

 なお、filter関数の書式は以下の通りです。

filter([データセット名],[条件式])

 データセット名については、ダブルクォーテーション「"」で囲んでください。また、条件式については、Trueと判別されたデータのみ返されます。
 この設定により、無事にコンサルティング部の人のみに限定することができました。
 こちらも、参加者については同じようにValid ifの設定をすればOKです。

発表者も参加者も、コンサルティング部の人のみ表示できました

 なお、スライス機能を使っても同じことができると思います。その辺はお好みで。。

発表者の人は参加者に登録できないように動的に制御する

 最後に、応用その2です。
 やりたいことは「参加者の候補リストから発表者を取り除く」ということなのですが、ここで四則演算チックな考え方が出てきます。参加者について、以下のようにValid ifの設定をしてください。
※この設定は参加者に対してのみ設定します。発表者の設定はここでは変更しません。

・Data Validity>Valid if:filter("従業員マスタ",[部署]="コンサルティング部")-List([発表者])

発表者を参加者として登録できないようにするための設定

 この式をそのまま解釈すると、「filter関数の返り値のリスト」から「発表者のリスト」を減算する、となります。これで今回の要件が満たせてしまうんですね~。
 この設定により、発表者で設定した人以外を参加者の候補に動的に表示することができました。

発表者が参加者候補リストに表示されないようになりました

終わりに

 今回は、EnumとEnumListで他のテーブルの値を参照する方法についてご紹介しました。

 より実践的なアプリを作成しようとすると、EnumとEnumListで他のテーブルを参照する局面は必ず出てくると思います。
 既にAppsheetに詳しい方も、これから学んでいく方も、今回のような基本的な内容に都度立ち返りながら、業務改善につながるお役立ちアプリを作っていきましょう

このブログが、皆さんのAppsheet活動の参考になれば幸いです。


IT内製化支援、Salesforceの運用・導入、DX化推進に関するご相談をお待ちしております

 弊社では、ノーコード開発アプリを用いたIT内製化支援、Salesforceの運用・導入、および、DX化推進に関するご相談を承っております。お気軽に弊社お問い合わせサイトよりご相談などをお寄せいただければと思います。

ソシオネットHP:http://www.socionet.co.jp/
IT内製化支援支援サービス:https://socionet.co.jp/insourcing-support-service/
Salesforce最適化支援サービス:https://socionet.co.jp/salesforce-service/
DXサポーターズ特設サイト:https://socionet.co.jp/dx-supporters/
お問い合わせ:https://socionet.co.jp/contact/


この記事が参加している募集

この記事が気に入ったらサポートをしてみませんか?