見出し画像

【AppSheet】これを知らなきゃ式と関数が利用できない!基礎固めして関数をスムーズに利用しよう

値の取り方にはいくつかパターンがある。今回は、このパターンごとに基本となる内容をまとめていこうと思います。
値が取れないと次のステップの関数利用で躓くと思うので、スムーズに関数が使えるようになるためにもしっかり理解していきたいところ。

ということで、値取得の基礎固めをしていきましょう!

始める前の大前提

データベースに馴染みのある人はピンと来るかもですが、念のため大前提について2つ記載しておきます。

同じテーブル同士の項目は取得が出来る

Appsheetでも基本、同じテーブル(値が一意に特定可)であればテーブル名を省略して値が取得できます。

ちなみに、私は今回項目という用語を便宜的に使っていますが、列の値(Column value expressions)という言い方もあるようです。

AppSheetの項目はすでにどこかの列・項目に紐づく

Appsheetで値を利用する際には、すでにどこかの列・項目に紐づいています。
例えば、Dataであれば項目を選んでそこに式を書くようなイメージだし、アクションなんかもテーブルごとに作るから、テーブルに紐づきます。

なので、テストを実行したときにはのテーブル・項目を使った結果が出てきます。

▼ 画面を見ながら確認 ▼

例えば、Display Nameに式を書く時。
ユーザーTBLの”名前”項目に紐づいている。
例えば、アクションのDisplay Nameは、ユーザーTBLに紐づく。



シンプルに項目を取得する

(同じテーブルの)列の値を取得する

大前提で書いたように、式を書く時にはテーブルや列に項目が紐づくため、最低限の「項目名」を書くだけでどの項目なのか一意に決まります。なので、同じテーブルであれば、項目名を書くだけで値が取得できます。

■式への記載方法
[項目名]


▼ 画面を見ながら確認 ▼

タスクTBLのタスクIDのDisplayNameの式に書いてみます。
タスクTBLにタスク名は存在するため、項目名だけで値が取れました。
一方、タスクTBLに無い項目を取得しようとするとエラーになります。

「 '優先度'の列が見つかりませんが、'詳細'のことですか?」とのこと。
(後半エラーはよくわかりませんが)タスクTBLに優先度はないので、列が無いよ~というエラーが出るのは当然ですよね。


他のテーブルの列の値を取得する

先程は、同じテーブルに「優先度」が無くて、見つからないよ?というエラーになりましたが、
テーブル名を一緒に記載することで他のテーブルの項目を取得することができます。このテーブルのこの項目だよと明示的に記載することで、どの項目の事なのか分かるようになるからですね。

■式への記載方法
テーブル名[項目名]


▼ 画面を見ながら確認 ▼

先程のエラー式に、テーブル名を入れてみるとエラーがなくなります。
この通り、項目が取れました。
ちなみに、優先度マスタのテーブルには「高」「中」「低」の3つの項目を持っています。


ここで一つポイントなのは、各列で表示されている結果は優先度マスタのすべての値を表示するという点です。
列ごとに条件が付いてフィルターがかかっているのではなく、すべての値が出てくるんです。のちに出てくる間接参照との違いはココです。


間接参照で項目を取得する

Ref型を利用している際には、間接参照として他のテーブルの値を取得できます。間接参照の場合には、参照する値は行ごとに適切な値を取ることができます。

間接参照して、他の列の値を取得(1→nを取りに行く)

■式への記載方法
[Ref型の項目名].[Ref先のテーブルの項目名]

※Ref先のテーブルの項目名がRef型の項目名の場合には、更に違うテーブルを参照することも可能。
[Ref型の項目名①].[Ref型の項目名②].[Ref先のテーブルの項目名]


▼ 画面を見ながら確認 ▼

タスクの詳細IDはRef型です
Ref型のタスクの詳細IDからタスクの詳細TBLにあるタスクの優先度をとっていく
無事値が取れました。


間接参照して、他の列の値を取得(n→1を取りに行く)

Refされている時、n側には「Related テーブル名s」という項目が自動的に追加されます。
これが、1側のテーブルに紐づく外部キーのような役目を担っているようで、この項目から紐づくテーブルの項目を取得することができるようです。

■式への記載方法
[Ref型を要素に持つLIST型][Ref型のあるテーブルの項目名]


▼ 画面を見ながら確認 ▼

Rこんな感じに、タイプはLIST型で、タスクTBLをRefしています。
Ref型を要素に持つLIST型。


ちなみに、REF_ROWSは関数のようでヘルプページもありました。
行に合致するようなリストを返してくれる関数のようです。


Related タスクsがRefしているタスクTBLから、タスク名を取得する
上手くタスク名が取れました。


最後に、ヘルプページの紹介をして終わっていきます。

列の値(Column value expressions)のヘルプはこちら。


間接参照はDereference expressionsと言い、こちらにヘルプがあります。


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