管理人がみんなに伝えたい!!と思った知識や学びを気ままに書いています(^^)

【永久保存版】appsheetで覚えておくべきList関数

【永久保存版】appsheetで覚えておくべきList関数

本記事はノーコードアプリ開発について全く知らなかった管理人が独学で勉強し、ここ大事!と感じた部分を記事にまとめています。

本ブログでは新UI画面で内容をまとめています。

新旧画面への切り替えは、下図を参考に該当アイコンをクリックしてください(^^)

新UI画面の説明

まずはじめに

本記事はこんな人におすすめ!!
  • appsheetで最低限覚えておきたいList関数が知りたい人
  • リスト型のデータとは何かを知りたい人
本記事を読んで出来るようになること
  • リストの作成方法
  • リストを作成する関数が求める引数の渡し方が分かる

今回の記事内容は返り値がリストタイプの関数です。

私もこのリストを返す関数の理解がなかなか出来ずに非常に苦しみました・・

しかもこのリストを返す関数の中でも最重要とも言えるのがselect()関数なのですが、

この関数は初心者には非常に難解な関数です。

他にもリストに関係する情報をぎゅっとまとめてみましたので、ぜひ参考にしてください(^^)

それでは勉強していきましょう!


そもそもListって?

listとは

最初にListの入力を求められる場面を把握しておきましょう。

結論から言えば、ユーザーに値の入力制限やおすすめの値で入力補助させたい時に使用します。

カラム設定のValid if
Valid ifの画面

訳:このカラムに入力されるデータに制限をつけますか?

入力するデータに制限をつける、つまりアプリ作成者が入力して欲しいデータを用意することになるので、ここにはリストを送ることが可能です。

カラム設定のSuggested Values
Suggested valueの説明

訳:このカラムにリストを用意することで、おすすめ値としてユーザーに提案することが可能です。

あくまでおすすめ値(提案値)なので、ユーザー側で新規に入力値を登録することも可能です。

また、リストを送ることが可能かどうかは下の写真の赤枠の部分を見れば判別可能です(^^)

リストを入力できる場所

appsheetに関数を入力するときに確認しましょう(^^)


List関数とは?

list expressionとは

次に、List関数の定義を確認したいと思います。

List関数リストのデータ(値)を使うもしくは生成する関数を指します。

Number型(数字のリスト)Email型(メールアドレスのリスト)列の値(カラム値のリスト)など様々なリストを作成することが出来ますが、必ず1つのデータタイプを集めたリストになります。

代表的なリストの作成方法は以下の5つです。

  • 直接リストを作成する
  • データタイプをEnumlistに設定する
  • データタイプrefの特性を利用する
  • テーブル/カラム値の関係から作成する
  • 関数に引数を渡して作成する

順番に見ていきましょう(^^)

直接リストを作成する

直接リストを作成

1つ目の方法として直接リストを作成する方法があります。

具体的な方法は下記の2つです。

  • {}:中括弧でくくる。リストにしたい値が複数ある場合はカンマで区切る
  • list()関数で括弧の中に値を送る(複数ある場合はカンマで区切る)
list()関数の使い方

list(value1,value2,…,value n)

括弧の中の値はカンマで区切ってかつその値は同じデータタイプを用います

list関数の説明

例えば、データの入力値に制限をかけたい場合を想定して、Valid ifにlist(1,2,3)と入力すると

半角の1または2または3から値を選ばせることが可能になります。

データタイプをEnumlistに設定する

データタイプをenumlistにする

これはappsheetにデータを読み込んだ際に必ず行うカラムのデータタイプの設定です。

設定の仕方は簡単で、カラム設定からデータタイプをEnumlistにするだけです。

enumlistの使い方はこちらの記事で詳しく学べます

参考記事

データタイプrefの特性を利用する

データイプrefの説明

これも上の説明と同じくデータタイプの設定の1つです。

appsheetには参照データのシートが2つ以上ある場合、親子関係を持たせることが可能です。

appsheetでアプリ開発をするなら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()関数の使い方

filter(dataset,select-row?)

第一引数に検索するテーブルもしくはスライス名を ” ” でくくって指定し、第二引数にdatasetの各行に対して評価するYes-No expressionを指定します。

filter関数の説明

例えば下写真のようなデータテーブルを用意します。

filter関数の説明

このデータテーブルにおいてfilter()関数に値を送った時の返り値をまとめました(^^)

関数の入力値返り値
filter(“仕事”,[対応者]=[_thisrow].[対応者])Aさんの登録データを参照 → Aさんの全ての登録データ
Bさんの登録データを参照 → Bさんの全ての登録データ
Cさんの登録データを参照 → Cさんの全ての登録データ
filter(“仕事”,[旅費]>15000)旅費が15000円以上発生している4件の登録データ

正直スライステーブルの作成をしておけばそんな使うこともないような気がしなくもないですが・・

私も勉強中ですので、「使うことが今後ありそう」な関数として覚えておこうと思います。

intersect()関数

intersect()関数の使い方

intersect(list1,list2)

第一引数に1つ目のリスト第二引数に2つ目のリストを指定すると、両方に共通する項目をリストで返します。

intersect関数の説明

intersect()関数に値を送った時の返り値を表にまとめました(^^)

関数の入力値返り値
intersect(list(1,2,3),list(2,3,4))2,3
intersect(仕事[対応者],list(aaa@gmail.com))[対応者]カラムにaaa@gmail.comがいる場合
そのメールアドレスを持つデータをリストで返す

この関数もまだ私は使いこなせていませんが、応用が効く関数だと思います。

ユースケースを思いついたら記事にまとめたいと思います(^^)

list()関数

list()関数の使い方

list(value1,value2,…,value n)

括弧の中の値はカンマで区切ってかつその値は同じデータタイプを用います

list関数の説明

これまで何気なく関数の説明で使っているので詳細は割愛します。

select()関数

select()関数の使い方

select(dataset name[column name],select-row?[,distinct-only?])

第一引数にテーブル名もしくはスライス名にカラム値を繋げたリストを指定第二引数に第一引数で送ったリストの各行にフィルター条件を指定します。第三引数は重複した値を含めるかどうかの引数です。

この関数を使いこなせるかでアプリの完成度は大きく変わります

参考記事

このselect()関数はappsheetでアプリを開発するなら避けては通れない関数です。

それくらい汎用性が高くて頻出する関数です。

逆に考えるんだ!これさえマスターすれば怖くないと・・

冗談抜きでこの関数を使いこなせるようになれば、大抵のことは出来るようになってしまいます・・笑

私がもし一から関数の勉強をするならこのselect()関数をまず勉強します(^^)

sort()関数とtop()関数

sort()関数の使い方

sort(list[,descending?])

第一引数にリストを送り、第二引数に降順(True)か昇順(False)を入力します。

第二引数を省略した場合は昇順(False)とみなされます。

sort関数の説明

sort()関数はこれ単体では使うことはありませんが、リストを作成して任意の値を抽出したい時に使える関数です。

top()関数の使い方

top(list,how-many)

第一引数にリストを送り、第二引数にリストから返される項目値の個数を指定します。

top関数の説明

せっかくなので、sort()関数とtop()関数を組み合わせる例を考えてみましょう(^^)

例えば、生徒名簿にテストの点数をデータとして管理するデータがあるとします。

生徒名簿の仮データ

このデータに対してtop(sort(生徒名簿[点数],true),3) と入力すると返り値は97,96,94になります。

sort()関数で並び替えてtop()関数で値を取り出すイメージです


まとめ

以上、List関数についての記事でした。

リストに困ったらとりあえずselect()関数を叩け!

身も蓋もないですが案外これが覚えることも最小限で済むという・・笑

リスト関数は、引数の渡し方もほとんど同じなので、こういう関数があったなーってざっくりでいいので覚えておくといいと思います。

記事内容について何かありましたらページ下にあるコメント欄からコメントをお願いします。

わかりにくかった部分や間違った情報などご指摘いただけると嬉しいです!

勉強お疲れさまでした(^^)

appsheetで覚えておきたい関数についてまとめています

参考記事

2 COMMENTS

かりゅう

こんにちは。
あなたのおかげで解決した課題がいくつもあります。
ありがとうございます。

ですが、あと一つどうしても解決したい課題があります。
enumlistで選択する項目をEnumList で複数選択した項目で絞り込みをかけたいです。

sort(select(Aシート[リストID],and(if(isnotblank([大分類]),[大分類]=[_thisrow].[大分類],true),if(isnotblank([中分類]),[中分類]=[_thisrow].[中分類],true))),true)

上記の大分類は1項目で良いのですが、中分類は複数項目で絞り込みたいです。

関数や説明が上手くできておらず申し訳ありません。
ぜひ解決していただきたいです。

返信する
k

コメントありがとうございます(^^)
直前に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つが表示されます(^^)

返信する

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA