本記事はノーコードアプリ開発について全く知らなかった管理人が独学で勉強し、ここ大事!と感じた部分を記事にまとめています。
本ブログでは新UI画面で内容をまとめています。
新旧画面への切り替えは、下図を参考に該当アイコンをクリックしてください(^^)
まずはじめに
- appsheetで最低限覚えておきたいList関数が知りたい人
- リスト型のデータとは何かを知りたい人
- リストの作成方法
- リストを作成する関数が求める引数の渡し方が分かる
今回の記事内容は返り値がリストタイプの関数です。
私もこのリストを返す関数の理解がなかなか出来ずに非常に苦しみました・・
しかもこのリストを返す関数の中でも最重要とも言えるのがselect()関数なのですが、
この関数は初心者には非常に難解な関数です。
他にもリストに関係する情報をぎゅっとまとめてみましたので、ぜひ参考にしてください(^^)
それでは勉強していきましょう!
そもそもListって?
最初にListの入力を求められる場面を把握しておきましょう。
結論から言えば、ユーザーに値の入力制限やおすすめの値で入力補助させたい時に使用します。
訳:このカラムに入力されるデータに制限をつけますか?
入力するデータに制限をつける、つまりアプリ作成者が入力して欲しいデータを用意することになるので、ここにはリストを送ることが可能です。
訳:このカラムにリストを用意することで、おすすめ値としてユーザーに提案することが可能です。
あくまでおすすめ値(提案値)なので、ユーザー側で新規に入力値を登録することも可能です。
また、リストを送ることが可能かどうかは下の写真の赤枠の部分を見れば判別可能です(^^)
appsheetに関数を入力するときに確認しましょう(^^)
List関数とは?
次に、List関数の定義を確認したいと思います。
List関数はリストのデータ(値)を使うもしくは生成する関数を指します。
Number型(数字のリスト)、Email型(メールアドレスのリスト)、列の値(カラム値のリスト)など様々なリストを作成することが出来ますが、必ず1つのデータタイプを集めたリストになります。
代表的なリストの作成方法は以下の5つです。
- 直接リストを作成する
- データタイプをEnumlistに設定する
- データタイプrefの特性を利用する
- テーブル/カラム値の関係から作成する
- 関数に引数を渡して作成する
順番に見ていきましょう(^^)
直接リストを作成する
1つ目の方法として直接リストを作成する方法があります。
具体的な方法は下記の2つです。
- {}:中括弧でくくる。リストにしたい値が複数ある場合はカンマで区切る
- list()関数で括弧の中に値を送る(複数ある場合はカンマで区切る)
例えば、データの入力値に制限をかけたい場合を想定して、Valid ifにlist(1,2,3)と入力すると
半角の1または2または3から値を選ばせることが可能になります。
データタイプをEnumlistに設定する
これはappsheetにデータを読み込んだ際に必ず行うカラムのデータタイプの設定です。
設定の仕方は簡単で、カラム設定からデータタイプをEnumlistにするだけです。
enumlistの使い方はこちらの記事で詳しく学べます
Automationの自動メール送信方法の設定が学べます(^^)
【これで解決!】Enumlistの使い方
データタイプrefの特性を利用する
これも上の説明と同じくデータタイプの設定の1つです。
appsheetには参照データのシートが2つ以上ある場合、親子関係を持たせることが可能です。
appsheetでアプリ開発をするならref機能については学んでおきましょう
タイプrefの基本について学べます(^^)
【誰でも簡単】データタイプrefの機能について
テーブル間にref関係をもたせると親テーブル(refの参照先)に[Related XXXs]というVirtual Columnが自動的に作成されます。このVCのデータタイプは必ずListとして生成されます。
テーブル/カラム値の関係から作成する
appsheetで簡単にリストを作る方法として、テーブル名とカラム名を引っ付けてリストを作成する方法があります。
入力例を見てみましょう。
例えば、シート名がユーザーでカラムにemailという値が入っている場合
ユーザー[email]
と入力すると、写真で選択されているB列の値をリストとして入手することが可能です。
この場合の返り値は、aaa@gmail.com,bbb@gmail.com,ccc@gmail.comです
appsheetにおいてリストを作成する最もシンプルで簡単な構文だと思います(^^)
のちに説明するselect()関数で多用する構文なので、必ず覚えておきましょう!
関数に引数を渡して作成する
最後に関数に引数を渡してリストを作成する方法のご紹介です。
リストを作成する関数の中で私が使ったことがある、または使うことがあるかも?と思う関数をピックアップしました。
これ以外にもありますが、最低限これだけ覚えておけばまず困らないと思います。
順番に見ていきましょう(^^)
例えば下写真のようなデータテーブルを用意します。
このデータテーブルにおいてfilter()関数に値を送った時の返り値をまとめました(^^)
関数の入力値 | 返り値 |
---|---|
filter(“仕事”,[対応者]=[_thisrow].[対応者]) | Aさんの登録データを参照 → Aさんの全ての登録データ Bさんの登録データを参照 → Bさんの全ての登録データ Cさんの登録データを参照 → Cさんの全ての登録データ |
filter(“仕事”,[旅費]>15000) | 旅費が15000円以上発生している4件の登録データ |
正直スライステーブルの作成をしておけばそんな使うこともないような気がしなくもないですが・・
私も勉強中ですので、「使うことが今後ありそう」な関数として覚えておこうと思います。
intersect()関数に値を送った時の返り値を表にまとめました(^^)
関数の入力値 | 返り値 |
---|---|
intersect(list(1,2,3),list(2,3,4)) | 2,3 |
intersect(仕事[対応者],list(aaa@gmail.com)) | [対応者]カラムにaaa@gmail.comがいる場合 そのメールアドレスを持つデータをリストで返す |
この関数もまだ私は使いこなせていませんが、応用が効く関数だと思います。
ユースケースを思いついたら記事にまとめたいと思います(^^)
これまで何気なく関数の説明で使っているので詳細は割愛します。
この関数を使いこなせるかでアプリの完成度は大きく変わります
select()関数の基礎を学ぶならこちら(^^)
【これで解決!】select()関数の使い方
select()関数を使ってUIを向上させる仕組みが作れます(^^)
【脱初心者!】select()関数で依存型ドロップダウンリストを作成する方法
このselect()関数はappsheetでアプリを開発するなら避けては通れない関数です。
それくらい汎用性が高くて頻出する関数です。
逆に考えるんだ!これさえマスターすれば怖くないと・・
冗談抜きでこの関数を使いこなせるようになれば、大抵のことは出来るようになってしまいます・・笑
私がもし一から関数の勉強をするならこのselect()関数をまず勉強します(^^)
sort()関数はこれ単体では使うことはありませんが、リストを作成して任意の値を抽出したい時に使える関数です。
せっかくなので、sort()関数とtop()関数を組み合わせる例を考えてみましょう(^^)
例えば、生徒名簿にテストの点数をデータとして管理するデータがあるとします。
このデータに対してtop(sort(生徒名簿[点数],true),3) と入力すると返り値は97,96,94になります。
sort()関数で並び替えてtop()関数で値を取り出すイメージです
まとめ
以上、List関数についての記事でした。
リストに困ったらとりあえずselect()関数を叩け!
身も蓋もないですが案外これが覚えることも最小限で済むという・・笑
リスト関数は、引数の渡し方もほとんど同じなので、こういう関数があったなーってざっくりでいいので覚えておくといいと思います。
記事内容について何かありましたらページ下にあるコメント欄からコメントをお願いします。
わかりにくかった部分や間違った情報などご指摘いただけると嬉しいです!
勉強お疲れさまでした(^^)
appsheetで覚えておきたい関数についてまとめています
このページにappsheetでよく使う関数をまとめています(^^)
【まとめ】appsheetでよく使う関数一覧
こんにちは。
あなたのおかげで解決した課題がいくつもあります。
ありがとうございます。
ですが、あと一つどうしても解決したい課題があります。
enumlistで選択する項目をEnumList で複数選択した項目で絞り込みをかけたいです。
sort(select(Aシート[リストID],and(if(isnotblank([大分類]),[大分類]=[_thisrow].[大分類],true),if(isnotblank([中分類]),[中分類]=[_thisrow].[中分類],true))),true)
上記の大分類は1項目で良いのですが、中分類は複数項目で絞り込みたいです。
関数や説明が上手くできておらず申し訳ありません。
ぜひ解決していただきたいです。
コメントありがとうございます(^^)
直前にEnumlistで選択した項目に該当するリストを、次の入力項目に反映させたいという悩みですね。
以下のダミーデータで検証しました。(リスト用のシートを別に用意したほうがいいです)
○Aシート(シート名):Key値はリストID
リストID 大分類 中分類
A 営業部 男性
B 営業部 男性
C 総務部 男性
D 人事部 女性
E 製造部 女性
F 開発部 女性
1.大分類をEnumlist(Enumでも可)、Suggested valueにunique(Aシート[大分類])と入力
2.中分類をEnumlist、Suggested valueにunique(select(Aシート[中分類], in([大分類], [_thisrow].[大分類])))と入力
これで例えば営業部と総務部の2つを選べば中分類は男性のみ、ここに製造部を加え3つにすると中分類は男性と女性の2つが表示されます(^^)