Google AppSheetとは?
AppSheetは、スプレッドシートをDBとしてノーコードで簡単にアプリケーションを開発することができるGoogleのサービスです。
基本的な機能はGoogleアカウントを持っている方だと誰でも無料で使うことができますが、有償版を購入すると、オートメーション機能やデプロイ機能なども扱えるようになり、作り込むと結構奥が深いサービスです。
課題点
ワークフローアプリや管理アプリなどを手軽に作れて非常に便利なのですが、気になったことが1つ。
それは、デフォルトの削除機能が物理削除であることです。
例として、ID(自動生成)と内容(フリーテキスト)を登録するアプリケーションを作成しました。
下の画像のように削除ボタンを押して削除し、DBの方を確認すると、該当行のデータが物理削除され、削除した行が空欄になっています。
これを、空行にならないよう論理削除にする機能を実装しようと思います。
実装
まず、DBとして使っているスプレッドシートのテーブルカラムに「削除」カラムを追加します。
初期値を0として、論理削除された場合は1にします。
AppSheet側で、「Regenerate Schema」を押下して、テーブルを再読み込みします。
以下のように削除カラムを設定します。
Show?(画面にデータを表示させるか)
→オフ
Initial value(初期値を設定する)
→0
続いて、Actionsで論理削除用のアクションを追加します。
以下のように追加したアクションを設定します。
Action name(アクションの名前)
→削除
For a record of this table(アクションを実行する対象のテーブルを選択する)
→対象のテーブル
Set these columns(アクションを実行した際に何のカラムにどんな値をセットするか)
→削除=1
Prominence(アクションボタンをどこに置くか)
→Display as primary
Needs confirmation?(アクション実行時に確認ダイアログを表示するか)
→オン
Confirmation Message(確認ダイアログのテキストを設定)
→削除しますか?
これで物理削除用のボタンを押すと、削除カラムの値が「1」になるように設定できました。次に、要らないアクションを非表示にします。
まず、デフォルトの削除ボタンは不要なので、DataでDeletes機能をオフにします。
また、デフォルトの編集ボタンを非表示にしたい場合、Dataでupdates機能をオフにしてしまうと追加した論理削除のアクションも非表示になってしまいます。なのでこちらはActionsの「Behavior」部分で制御をします。
以下のようにEditアクションを設定します。
Only if this condition is true(どんな条件でアクションを表示させるか)
→false
後は、論理削除のアクションのアイコンをゴミ箱に変更してActions側の設定は完了です。
最後に、Dataで削除カラムが「0」の行のみ表示する設定を行います。
以下のように設定します。
Security filter(どんな条件でデータを表示させるか)
→[削除]=0
動作確認
では実際に画面を確認しましょう。
まとめ
いかがでしたでしょうか?
AppSheetはローコード・ノーコードのサービスのため、ある程度デフォルトの機能に従う必要がありますが、今回のような少しの工夫で結構フレキシブルに対応が可能そうです。
皆様もAppSheetで論理削除を実装する機会があれば、ご参考にしていただけますと幸いです。