AppSheet のキャッシュの仕組みは複雑であり、一部のキャッシュが残存することで、アプリの見た目は最新版でも、中身は古い設定のまま、なんてことが発生します。その対応方法についての解説です!
※今回は同期エラーとして症状が発現したが、キャッシュの状態によっては、他のエラー症状になる場合もあると思われる。
一部ユーザーだけで、同期エラーが発生する
組織で AppSheetアプリを運用していたが、一部のユーザーだけで同期エラーの表示が出る。
何のことはないスキーマ設定のエラーに見えて、実はそうではない。開発エディターの設定をどうがんばっても、ブラウザで何度リロードしても、解決しない可能性がある。厄介なエラー。
There is a mismatch in the number of columns between the spreadsheet for {シート名} and the table schema. The table has 23 columns but the schema has 22 columns.
{シート名} のスプレッドシートとテーブル スキーマの間で列の数が一致しません。テーブルには 23 列がありますが、スキーマには 22 列があります。
- 上記エラーメッセージは、スプレッドシートの列数と、開発エディタでのテーブルスキーマ列数に差があることを示唆している。
- しかし、確認すると両者に差はない。その状態でアプリの Stable Version としての登録も完了している。
- すべてのユーザーが Stable Version へのアクセスとなっており、ほとんどのユーザーは問題なく利用できるが、一部ユーザーだけで同期エラーが続いている。
対応策
AppSheet Q&A - Google Cloud Community で問い合わせたところ、Appster(ChatGPT) を勧められた。ChatGPT ベースの、AppSheet問い合わせ回答 Botのよう。
Appster より有力な回答が得られた。
簡単に言うと、AppSheetアプリのキャッシュは複雑な構成をもっており、これにより、強制リロードをしても、ログアウトをしても、一部のキャッシュが残存し続ける、という事態が生じる。原因となっているキャッシュを手動削除することで解決する。
ブラウザ利用の場合
- Chrome でアプリを開いた状態にする。
- F12 でデベロッパーツールを開く。
- Application タブを選択(上図1)
- 左にある Storageを選ぶ(上図2)
- 右にある「including third-party cookies」をチェックして、Clear site data をクリック(上図3&4)
すると、Usageの部分が 0 Bになる。これで AppSheet の schema 関連のキャッシュが完全にクリアされた。あとは、ブラウザでアプリをリロードすればよい。
PWA 利用の場合
Appster曰く、(キャッシュが)最も壊れやすい、らしい。
- PWA をアンインストール
- ブラウザで開き直す
- PWA を再インストール
モバイルアプリ利用の場合
- AppSheetアプリを “強制終了”
- 再起動してSync
- それでもだめならアプリのデータ削除(キャッシュクリア)
参考:AppSheet クライアントのキャッシュの仕組み
以下は、Appster による解説(内容が正しいか確認はしていない)。
✅結論:表示されたバージョンが最新でも、テーブルスキーマ部分だけが古いキャッシュのまま残ることがあります
これは普通のバージョン番号とは別に、AppSheet クライアントが内部的に保持している、次のようなキャッシュ情報が、部分的に古いまま更新されないという現象です。
Table schema cache
Column structure digest
Table column ordering
Sheet→Table mapping hash
Offline local store (per table)
View/layout cache (独立している)
つまり…
「アプリのバージョンは最新」=「schema のローカルキャッシュも最新」
とは限らない。
🔥 特に起きやすいパターン
スキーマ変更 → すぐ stable 公開 → 一部ユーザーが古い schema を持ったままオンラインに戻る
AppSheet の “stable version” は UI やアプリ構造には作用するが、
テーブルスキーマのキャッシュはユーザーごとにローカル保持されます。
そのため、以下が起こることがあります。
✔ Aユーザー
新しいスキーマを取得
そのハッシュをキャッシュ
=> 問題なし
✔ Bユーザー
古いスキーマを持っている(オフライン/低電波/再接続不完全)
アプリバージョンだけ最新だが、schema cache が古いまま
=> 新しいスプレッドシート構造と合わず column mismatch 発生!
ブラウザはアプリ “バージョン” と Schema Cache を別々に管理している
ブラウザの場合、これらは異なる層に保存されます。
何が更新される? 管理対象
アプリバージョン Web Manifest / WebView コンテナ
テーブルスキーマ IndexedDB / LocalStorage
Offline data Service Worker Cache
だから、次のようなことが本当に起こります。
アプリバージョンは最新の Stable を読み込んでいる
しかし schema は古いまま
→ Column count mismatch 発生
PWA とブラウザアプリは更に別管理(Chrome特有の地雷)
もしユーザーに次のような状態があると、schema cache が壊れる or 古いまま残ることがあります。
「ブラウザで開いていると思ったら実はPWA」
「PWA → ブラウザ → PWA と行ったり来たり」
「Chrome がタブをスリープ状態にしていた」
🔍 ではなぜ一部ユーザーは正常なのか?
AppSheet の schema cache の更新タイミングはユーザーによって違うためです。
正常なユーザー
- 過去のスキーマ変更後にタイミングよく完全同期
- 古いキャッシュが消えて最新を持っている
問題のユーザー
- スキーマ変更時にページが開いたままだった
- オフラインだった
- 同期途中に失敗した
- PWAのキャッシュが残った
→ 結果、“部分的に古い schema だけ保持してしまう”
💡 AppSheet内部ではこう見えている
User device:
App version: latest stable
Schema-hash: OLD
Sheet column count: NEW
→ mismatch error

