データベースからスプレッドシートへ変更する背景
変更に至った背景
2024年3月時点では、AppSheetのデータベース機能は、新規機能として鳴り物入りで登場しており、界隈では期待値が高かったです。
そのため、新規アプリをデータベースで作成してみたのですが、いくつか課題があり(今後は改善されると思う)、データベースからスプレッドシートへ変更するようにしました。
現時点で感じるAppSheetデータベースの課題点
データベースのテーブル数
データベースの1テーブルで利用できるレコード数
性能改善対応
今回のアプリは、月末に1か月の作業から請求金額などを集計し、請求書を作成するバッチ処理的な機能があったのですが、帳票作成用の明細データの性能改善が必要でした。(というのも、そもそもAppSheetの更新処理は遅い。1レコード更新で1秒くらいの感覚)
そのためGAS(Google AppScript)を使って性能改善が必要となりました。
ただ、GAS(Google AppScript)で処理を行おうとしたとき、AppSheetデータベースより、スプレッドシートを利用したくなります。(というか、調べてはないですが、AppSheetデータベースに対してGASでデータ更新できるのか?)
AppSheetデータベース脱却の対応方針
前提として、データベースからスプレッドシートへ変更するのは、アプリをコピーする際にAppSheet側で自動でやってくれます。ただ、それによりどのような影響が発生するかは、やってみなければ分からんということで、ここにメモします。
以下、発生した問題と対策を、発生順でメモしていきます。(今後の自分のために)
発生問題① 金額が表示されなくなる
発生事象
金額が表示されなくなってしまいました。最後の行(¥5000)だけ表示されているのは、事象発生後に追加したデータです。
移行後のスプレッドシートを確認してみたところ、
金額データは入っており、データベースからスプレッドシートへ変更した際も移行されています。ただし、スプレッドシートの書式(データのフォーマット)は違っています。
原因
これは既存不具合の線もありますが、AppSheet側の「Data」で、金額項目にもかかわらずTypeを「Decimal」にしていた点が原因でした。
対策
「Data」の項目を修正していきます。
- Type: DecimalからPriceへ変更
- Decimal digits:小数点以下を2から0へ変更
- Currency symbol:円マーク「¥」に変更
結果、正しく金額が表示されるようになりました。
ただ、この事象は、本アプリ特有かもしれません。
というのも、本アプリは「一般ユーザ用」と「管理者用」で分けているのですが、同じデータベースを利用しています。
で、今回の事象は「一般ユーザ用」のアプリでのみ発生しており、「管理者用」のアプリでは発生していませんでした。
なぜなら、「管理者用」は上記の項目を「Price」に指定していたため、正しく表示できていました。
まとめ
移行前に「Data」のTypeを「Price」にしていた項目は、スプレッドシートへ移行後は注意が必要です。
もし移行後のアプリで「Decimal」などの数値型として参照しようとすると、スプレッドシート上は、「¥5000」の形式で保存されているため、正しく参照できないくなります。
コメントを残す