AppSheetでユーザ所属部署でフィルタして返す
AppSheetで在庫管理のアプリをテストで作っていた時に出てきた課題として、「ユーザのメアドじゃなくユーザの所属してる部署でフィルタして、それ以外は表示しない」というものが出てきました。
ユーザのメアドはUSEREMAILで取得できるのでそれをフィルタに打ち込めばすぐ実現できますが、それでは困るわけです。部署のデータは全部表示したい。
リンク
今回利用するファイル等
今回のサンプルはユーザリストが必要になります。よって、ユーザのメアドと部署を整備したシートに対して、USEREMAILで取得したメアドを元にLOOKUPさせて、部署を取ってくる。この取ってきた部署を持ってしてメインのテーブルをフィルタするという仕組みです。
シート構成
シートは2つ。この2つをテーブルとして取り込んでおく必要があります。
- dataシート:メインの表示・フィルタするテーブル(ID,部門,商品名のみのフィールド)
- userシート:部門整備用のシート(メアド,部門のみのフィールド)
userシートにはアクセスしてくるであろうユーザ全員のメアドと部門を記述整備しておく必要があります。
サンプルは現在は仮データになってるので、メールアドレスを書き換えてからデプロイしましょう。
図:ユーザリストはシンプルです
フィルタを構築
以下の手順でスライスを作り、フィルターをセットします。
- dataテーブル横の+ボタンをクリックする
- create a new slice for dataをクリックする
- slice nameは適当に設定します。
- Row filter conditionのテキストボックスをクリックします。
- 以下のような数式を入れてSaveをクリックする
1[部門] = LOOKUP(USEREMAIL(),"user","mail","部署")
※ユーザメアドを元にuserテーブルのmail列を基準に、部署列の値をLOOKUPしてきます。 - 左サイドバーのViewを開く
- dataをクリックして、For this dataを3.で作ったスライスを指定する
- 右上のSAVEをクリックする
ユーザのアドレスでフィルタは、例えば個人の申請用フォームなどとしては使うでしょう。しかし、例えば在庫管理などで支店毎のデータを他の支店から見えるというのは具合が悪い。こういった場合に、ユーザのメアドから所属部門を引っ張ってフィルタすることで、その支店にいる人は自分の支店のデータだけが見える。
他の人も同様のルールになるので、他のユーザも同様に自分の所属支店のデータだけが出てきます。
図:ちょっとしたテクだけれどよく使う