AppSheetを使っていると、現在のテーブルのフォームでデータの追加や削除などの変更を行ったときに他のテーブルのカラムの値を変更したいことがあります。
そうしたときに、アクションのDo thisでData: execute an action on a set of rowsを使用しますが、Referenced Table, Referenced Rows, Referenced Actionなどあまり見慣れない項目があります。
ここではその設定方法についてまとめています。
Data: execute an action on a set of rowsとは?
「Data: execute an action on a set of rows」とは他の異なるシートの値を変更するアクションです。
このアクションはAppSheetの公式ページで見ても使い方がわかりにくいです。例題もほとんどありません。

↓ 翻訳
この一括アクション オプションは、式に基づいたバージョンの一括選択です。この自動バージョンでは、ユーザーがアプリケーションのユーザー インターフェースを使用して一括アクションを選択するのではなく、式を使用して行を選択します。
オプション:
- Referenced Table: アクションが実行されるテーブル。
- Referenced Rows: 参照先テーブル内の操作対象の行。
- Referenced Action: 参照先の行に適用するアクション。
ここでは、この「Data: execute an actiion on a set of rows」の使い方を実例で解説します。
そもそもアクションって何ができるの?どう使うの?という方はこちらをご参考ください。
【AppSheet】Actions(アクション)とは何か?一覧や使い方を実例で分かりやすく解説|Automation(bot)と連携して自動化する方法
注意点:わかりにくいポイント
「Data: execute an action on a set of rows」を使う上で必ずと言っていいほどハマるポイントがいくつかあります。
これを押さえたうえでアクションを作成しているかどうかで、スムーズさが大きく異なります。
- あらかじめ実行するアクションを作成しておく(「Referenced Action」でアクションを選択するため。数式を入れるのではない)
- 「Referenced Rows」はリスト形式でカラムを指定する(SELECT関数やFILTER関数を使用する)
- 「Referenced Rows」KEYとなっている行を指定する
使い方
選択するアクションの作成
Data: execute an actiion on a set of rowsを使うためには、まず、データ変更などの処理を行いたい他のテーブルでアクションを作成しておく必要があります。
ここでは「本一覧」テーブルに次のような「本一覧の残数更新」というアクションを設定しておきます。

SUM( SELECT( 本一覧[全数], [_THISROW].[書籍名]=[書籍名] ) ) - COUNT( SELECT( 貸出管理マスター[書籍名], AND( [_THISROW].[書籍名] = [書籍名], [判定]="貸出" ), false ) ) + COUNT( SELECT( 貸出管理マスター[書籍名], AND( [_THISROW].[書籍名] = [書籍名], [判定]="返却" ), false ) )
のちほど、Data: execute an actiion on a set of rowsの「Referenced Rows」でこのアクションを指定します。
Do thisの選択
Data: execute an action on a set of rowsの使い方を解説します。
まずは、新しいアクションを作成し、Do Thisで「Data: execute an action on a set of rows」を選択します。

Referenced Tableの設定
「Referenced Table」はアクションを実行するテーブルです。
「Data: set the value of some columns in this row」と違って、現在のテーブルと異なるテーブルを選択することができます。(もちろん現在のテーブルも選択できます)

現在のテーブルは「貸出管理マスター」テーブルですが、ここでは「本一覧」を選択します。

「Referenced Action」でプルダウンでアクションを選択するのですが、「Referenced Table」で指定したテーブルに設定してあるアクションしか選択することができません。
Referenced Rowsの設定
続いて「Referenced Rows」を設定します。ここが最大のポイントです。
Referenced Rowsとは、選択したテーブルの中で処理適用する行を選択する場所になります。行をリスト形式で指定する必要があるため、基本的にはSELECT関数やFILTER関数を使います。
また、ここで指定する行はKEYでなければいけないという制約があります。
- リスト形式でカラムを指定する(SELECT関数やFILTER関数を使用する)
- KEYとなっている行を指定する
「Referenced Table」で指定した「本一覧」テーブルのKEYは「書籍名」カラムです。

このため、Referenced Rowsは次のように設定します。
SELECT( 本一覧[書籍名], [書籍名]=[_THISROW].[書籍名] )
[_THISROW]には、選択中の行が入ります。

一般的な書き方で書くと次のようになります。
SELECT( Reference Tabelで指定したテーブル名[KYEとなっているカラム名], [KYEとなっているカラム名]=[_THISROW].[KYEとなっているカラム名] )
Referenced Actionの設定
Referenced Actionは実行するアクションを選択します。
選択できるのは「Referenced Table」で指定したテーブルに設定してあるアクションのみです。

実際に「本一覧」に設定したアクションを見てみると同じ項目になっています。

アクションを設定し「SAVE」をクリックすれば設定は完了です。
