AppSheetの始め方ですが、個人的には「まずは触ってみる」が良いのかなと思っています。
一方、どこかのタイミングで公式のAppSheet ヘルプを見てみる事をお勧めします。Google公式ではありますが、すっきりとまとまっています。
https://support.google.com/appsheet?sjid=16566310863871746831-NC
今回は、その中でもAppSheet 独自だなーと思う部分である「列値式」を取り上げます。
もし[_THIS]が何を意味してるか、まだご存じでなければご一読いただければと思います。
1.[カラム名]
まずは基本となる[カラム名]です。これは、テーブルの1項目を表現しています。(あえて触れていませんが、赤破線で示すように、行が特定できている前提です。)

2.テーブル名[列名]
次は、テーブル名[列名]です。当然、複数の値が対象となるため、テーブル名[列名]はLIST型になります。

3.[参照キー(Ref型)].[カラム名]
参照(Ref)を用いて、別テーブルの値を参照する方法です。
参照(Ref)を使えば、対象テーブルの行を特定できます。逆に言うと、対象テーブルをユニークに特手できないと参照キー(Ref)に指定できません。
以下の例では、
受注明細側から、親である受注テーブルの「ColB(例えば顧客ID)」を参照したい!
といった場合になります。

4.[Related テーブル名][カラム名]
こちらも参照ですが、列参照(ListRef)になります。そのため結果はLIST型となります。
この「[Related テーブル名]」は、AppSheet で自動で作成されるため、見覚えがある方も多いと思います。
以下の例では、
受注に紐づく、受注明細のリストが該当します。実態としては、受注テーブル側で、
=RefRows(“受注明細”,”受注ID”)
のようにな形で紐づけられます。

そのため、もし受注明細の合計金額が知りたい場合などは、受注テーブル側に仮想列(バーチャルカラム)として
SUM([Related 受注明細][小計])
とすることで、簡単に集計を実施することが出来ます。
5.[_THIS] [_THISROW]
これは特殊な表現(簡単なのですが)で、自分自身を表します。よく使うのは、Valid if などの条件判定になります。入力している値が正しいかをチェックする際に利用設定が。
例えば配送予定日の入力時に、3日より後の日付の設定が必須であれば、
=[THIS]>TODAY()+3
のように設定します。
また、SelectやFilterなどのLSITを扱う場合の条件では、[_THISROW]をよく用います。
例えば、同じ顧客の受注が存在するか確認したい場合、
=COUNT(Filter(“受注”,[顧客ID]=[_TISHROW].[顧客ID]))>0
とすることで、判定を行うことが可能です。

6.[_THISROW_BEFORE][_THISROW_AFTER]
これは、データ更新を伴う「Action(アクション)」「Automation(オートメーション)」で利用します。
1回のアクション/オートメーションの中で更新前と更新後のデータを、それぞれ取得することができるため、大変便利です。

よく利用するイディオムとしては、オートメーションの実行トリガーになります。データ更新が発生したら実行したい処理があった場合に、
[_THISROW_BEFORE].[UpdateTime]<>[_THISROW_AFTER].[UpdateTime]
とすることで、オートメーションを実行させられます。
まとめ
AppSheet で知っておくべきと思う「列値式」について、ざっとまとめてみましたが、いかがだったでしょうか?
本当はもう1つ「親レコードまたは祖父母レコードの列の値」を取得する表現である
[_THISROW-n].[Column]
があるのですが、私自身もあまり使ったことがないため割愛させて頂いています。(SELECTの副問合せに対するAppSheet の表現方法だと思っています。)
コメントを残す