子テーブルまるごとコピーしたい
この人の見積もり内容をコピーして顧客名と担当者名だけ変えたい
でもAppSheetのアクションだと親テーブルのレコードしかコピーしてくれない…
そんな悩みを解決する記事を発見!
これ!kさんありがとうございます!
やってみたらカンタンだった!
せっかくなのでこれも参照して組み込んだ!
データ投入と同時に強制的にシンクさせる方法!
ちなみにちょっといじってこんな感じにした!
強制的にシンクする&その注文(親テーブル)のフォーム画面に遷移する関数
MAXROWを使って作成日時が一番最新の注文のフォームに飛ぶっていう感じ
コピーしたあと内容を差し替えることを想定するとこれがベターな気がする!
ちなみに最後の
にするとそのフォームに移動するだけになるので、強制的に同期するのが鬱陶しい時にはこっちもあり🐜
この一連のアクションで分かりづらいのはやはり execute an action on a set of rows
テーブルをまたいだアクションの実行。この部分かなと
自分なりにまとめると
Action name
- これはそのままアクションの名前
For a record of this table
- アクションを実行するテーブル
- どのテーブル起点にするか っていう考えでよろしいかと
Do this
- execute an action on a set of rows
- 紐付いたテーブルの関連する行に対してアクションを実行しますよってやつかなと
Referenced Table
- アクションが実行されるテーブルを選ぶ
- 今回は注文詳細をコピーする必要があるので注文詳細テーブルを指定する
Referenced Rows
- アクションを実行する対象の行の条件をここで指定する
- 今回の件で言えば、注文と紐付いた注文詳細を全てコピーするので SELECT(注文詳細[ID注文],[ID注文]=[_THISROW].[ID注文]) で、この注文に紐付いた注文詳細全てに対してアクションを実行することができることになる
- ただ注文と注文詳細をRefでくっつけた時に自動で出来上がる [Related 注文詳細s]が、SELECT(注文詳細[ID注文],[ID注文]=[_THISROW].[ID注文])と同義なので、[Related 注文詳細s]でもOK!!
Referenced Action
- 子テーブルに対して行うアクションを指定する
- なので子テーブル(今回で言えば注文詳細テーブル)で予めアクションを作っておく必要がある
- 子テーブルに作っておくアクションは注文詳細をコピーするアクション
ここさえわかればそれ以外のアクションはそんなに難しいことはないかも!?
最後に実際に動かしてみた!どんな動きになるか動画で!