3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Google AppSheetのアプリに論理削除の機能を追加する

Posted at

Google AppSheetとは?

AppSheetは、スプレッドシートをDBとしてノーコードで簡単にアプリケーションを開発することができるGoogleのサービスです。
基本的な機能はGoogleアカウントを持っている方だと誰でも無料で使うことができますが、有償版を購入すると、オートメーション機能やデプロイ機能なども扱えるようになり、作り込むと結構奥が深いサービスです。

課題点

ワークフローアプリや管理アプリなどを手軽に作れて非常に便利なのですが、気になったことが1つ。
それは、デフォルトの削除機能が物理削除であることです。

例として、ID(自動生成)と内容(フリーテキスト)を登録するアプリケーションを作成しました。
下の画像のように削除ボタンを押して削除し、DBの方を確認すると、該当行のデータが物理削除され、削除した行が空欄になっています。

スクリーンショット 2023-10-26 145308.png

スクリーンショット 2023-10-26 164046.png

スクリーンショット 2023-10-26 145353.png
これを、空行にならないよう論理削除にする機能を実装しようと思います。

実装

まず、DBとして使っているスプレッドシートのテーブルカラムに「削除」カラムを追加します。
初期値を0として、論理削除された場合は1にします。
スクリーンショット 2023-10-26 152319.png

AppSheet側で、「Regenerate Schema」を押下して、テーブルを再読み込みします。
スクリーンショット 2023-10-26 152348.png

以下のように削除カラムを設定します。

Show?(画面にデータを表示させるか)
 →オフ
Initial value(初期値を設定する)
 →0

スクリーンショット 2023-10-26 153953.png

続いて、Actionsで論理削除用のアクションを追加します。
スクリーンショット 2023-10-26 154349.png

以下のように追加したアクションを設定します。

Action name(アクションの名前)
 →削除
For a record of this table(アクションを実行する対象のテーブルを選択する)
 →対象のテーブル
Set these columns(アクションを実行した際に何のカラムにどんな値をセットするか)
 →削除=1
Prominence(アクションボタンをどこに置くか)
 →Display as primary
Needs confirmation?(アクション実行時に確認ダイアログを表示するか)
 →オン
Confirmation Message(確認ダイアログのテキストを設定)
 →削除しますか?

スクリーンショット 2023-10-26 160932.png

これで物理削除用のボタンを押すと、削除カラムの値が「1」になるように設定できました。次に、要らないアクションを非表示にします。

まず、デフォルトの削除ボタンは不要なので、DataでDeletes機能をオフにします。
スクリーンショット 2023-10-26 161338.png

また、デフォルトの編集ボタンを非表示にしたい場合、Dataでupdates機能をオフにしてしまうと追加した論理削除のアクションも非表示になってしまいます。なのでこちらはActionsの「Behavior」部分で制御をします。

以下のようにEditアクションを設定します。

Only if this condition is true(どんな条件でアクションを表示させるか)
 →false

スクリーンショット 2023-10-26 162045.png

後は、論理削除のアクションのアイコンをゴミ箱に変更してActions側の設定は完了です。
スクリーンショット 2023-10-27 142221.png

スクリーンショット 2023-10-26 162152.png

最後に、Dataで削除カラムが「0」の行のみ表示する設定を行います。

以下のように設定します。

Security filter(どんな条件でデータを表示させるか)
 →[削除]=0

スクリーンショット 2023-10-26 163726.png

動作確認

では実際に画面を確認しましょう。

テスト2を削除します。
スクリーンショット 2023-10-26 163952.png
スクリーンショット 2023-10-26 164010.png

画面上から消えていることが分かります。
スクリーンショット 2023-10-26 164031.png

DBを確認すると、正常に論理削除ができていました!
スクリーンショット 2023-10-26 164045.png

まとめ

いかがでしたでしょうか?
AppSheetはローコード・ノーコードのサービスのため、ある程度デフォルトの機能に従う必要がありますが、今回のような少しの工夫で結構フレキシブルに対応が可能そうです。
皆様もAppSheetで論理削除を実装する機会があれば、ご参考にしていただけますと幸いです。

3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?