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

【楽々設定!】Refで紐ついたデータを一括でコピーする方法

【楽々設定!】Refで紐ついたデータを一括でコピーする方法

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

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

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

新UI画面の説明

まずはじめに

本記事はこんな人におすすめ!!
  • Refで紐つけた子テーブルの情報も一括で親テーブルにコピーする方法が知りたい人
  • appsheetのコピーアクションの基礎を学びたい人
本記事を読んで出来るようになること
  • Add a new row to another…のアクションボタンの使い方がわかる
  • Execute an action…のアクションボタンの使い方がわかる

今回の記事はデータのコピーについてです。

こちらの記事で作成した見積書作成アプリを色々といじっている時に、一度作った見積書を明細込みで一括でコピーしたいな・・ と思いました。

この方法なら読者の皆さんに自信を持ってオススメできるので、ぜひ参考にしていただければと思います(^^)

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


実装したい内容の再確認

コピーアクションの説明

まず本記事内容について再度確認します。

この方法はデータタイプRefでリレーションをもたせているテーブル間において

親テーブルと子テーブルのデータを一括でコピーする方法についてまとめています。

上図のようにappsheetに用意されているコピーアクション単体では、実装は不可能です・・

それを無理やり叶えよう!というのが本記事です(^^)

具体的な手順ですが、以下の流れで実装が可能です。

  • 親テーブルのデータを親テーブルにコピーするアクションをつくる(アクション1)
  • 子テーブルのデータを子テーブルにコピーするアクションをつくる(アクション2)
  • アクション2の設定を親テーブルに移動させる(アクション3)
  • アクション1とアクション3をグループ化する

検証に用いたデータですが、以下の設定です。

見積書テーブル(親テーブル)
見積書テーブル
  • ID:Key値
  • 見積書番号:見積書作成アプリのため設定
  • image:ブログ記事内容を分かりやすくするために設定
  • Related 見積もり詳細s:Ref関係を結んだ時に自動で生成されるVirtual column
  • 合計金額:見積もり詳細で登録した金額の合算
見積もり詳細テーブル(子テーブル)
見積もり詳細テーブル
  • ID:Key値
  • 見積もりID:見積書テーブルとRef関係を結ぶカラム
  • 品目:本記事では説明は省略(品目テーブルを参照するカラム)
  • 価格:本記事では説明は省略(品目テーブルを参照するカラム)
  • 個数:品目の個数を入力するカラム

それでは順番に説明していきます(^^)


データをコピーするアクションをつくる

コピーアクションのイメージ

まず、親テーブルと子テーブルのデータをコピーするアクションをそれぞれつくります。

作り方は以下の流れを参考にしてください。

親テーブルにデータをコピーするアクションを作成する

Behaviorペイン→Actionタブから新規アクションを作成します。

親データコピーアクションの作成

赤枠を参考にして親データをコピーするアクションを作成します。

Add a new row to another table…とありますが、自分のテーブルも選べます

コピーアクションの内容

赤枠部分を参考にコピーするカラムの設定を行います。

ID(Key値)にはUNIQUEID()、その他のカラムは入力されているカラム値で大丈夫です(^^)

子テーブルにデータをコピーするアクションを作成する

子テーブルにも同じコピーアクションを作成します。

子データのコピーアクション

子テーブルのデータをコピーするアクションなので、参照テーブルの設定を間違えないように!

子アクションの設定

赤枠部分を参考にコピーする内容を設定します。

見積もりID(Refを結んでいるカラム)には以下の関数を入力してください。

any(select(見積書[ID],[_rownumber]=max(見積書[_rownumber])))

この構文の意味するところは

見積書テーブル(親テーブル)に登録されている最も新しいデータのID(Key値)を取得するです。

入力した関数の説明

親データをコピーする際、ID(Key値)は新規で取得されます。

そのコピーされた最新のデータがこれから子テーブルに紐つけたいデータそのものなので、

そのIDの値を見積りIDに送る必要があります。

よく分からなければ構文のコピーで大丈夫です(^^)

any(select(見積書[ID],[_rownumber]=max(見積書[_rownumber])))の構文は、どんなアプリでも同じ形を取るので、親テーブルのテーブル名Key値のカラムを変更してお使いください(^^)


子データをコピーするアクションを親テーブルに移動させる

アクションボタンの移動

次にやることとしては

子テーブルに作成したアクションボタンを親テーブルに移動させる

これをやってみたいと思います。

アクションボタンの移動設定

このアクションは設定が少し複雑なので、説明をリストにまとめました。

  • For a record of this table:アクションボタンを設定したいテーブル
  • Do this:Execute an action on a set of rows を選択
  • Referenced Table:移動させたいアクションボタンがあるテーブル
  • Referenced Rows:Referenced TableのKey値([Related 〇〇s]があればそれを選択)
  • Referenced Action:移動させたいアクションボタン

上記イメージで理解しておけばOKです!

仮にRef関係を結んでおらず、[Related XXXs]のVirtual Columnがない場合

select(Reference Table名[Key値],[Key値]=[_thisrow])

この関数を送っておけばOKです(^^)


作成したアクションボタンを1つにする

グループアクションの設定

最後に作成したアクションボタンを1つにしていきましょう。

親データと子データを一括でコピーするアクションを作成する
新規アクションボタンの作成

注意すべき点として

必ず親データのコピーのアクションを先(上)にセット するようにしてください。

これを守らないと子データの一括コピーはされません!

【検証】新規にデータを登録
新規データの登録

本記事のアプリの場合は

新規に見積書番号を発行し、その詳細(明細)を加えています。

登録されたデータのdeck View

登録されたデータのdeck Viewです。

【検証】一括でコピーするアクションボタンを押す
一括でコピーするアクションボタンを押す

画面上部にある一括でコピーする のボタンを押します。

コピー完了

コピー元と全く同じデータをコピーすることができるようになっています(^^)


まとめ

以上、親テーブルと子テーブルの一括でコピーする方法の記事でした。

手順としては

  • 親テーブルのデータを親テーブルにコピーするアクションをつくる(アクション1)
  • 子テーブルのデータを子テーブルにコピーするアクションをつくる(アクション2)
  • アクション2の設定を親テーブルに移動させる(アクション3)
  • アクション1とアクション3をグループ化する

この方法だと新たにシートを追加したりしなくても大丈夫で、どんなアプリでも設定することが可能だったので今回紹介しました。

また面白い設定方法など見つかったら記事にまとめていきます!

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

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

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

コメントを残す

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

CAPTCHA