0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AppSheet のキャッシュ問題(同期エラー)|There is a mismatch in the number of columns between the spreadsheet for {シート名} and the table schema.

Last updated at Posted at 2025-11-25

AppSheet のキャッシュの仕組みは複雑であり、一部のキャッシュが残存することで、アプリの見た目は最新版でも、中身は古い設定のまま、なんてことが発生します。その対応方法についての解説です!

※今回は同期エラーとして症状が発現したが、キャッシュの状態によっては、他のエラー症状になる場合もあると思われる。

一部ユーザーだけで、同期エラーが発生する

組織で AppSheetアプリを運用していたが、一部のユーザーだけで同期エラーの表示が出る。

何のことはないスキーマ設定のエラーに見えて、実はそうではない。開発エディターの設定をどうがんばっても、ブラウザで何度リロードしても、解決しない可能性がある。厄介なエラー。

image.png

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アプリのキャッシュは複雑な構成をもっており、これにより、強制リロードをしても、ログアウトをしても、一部のキャッシュが残存し続ける、という事態が生じる。原因となっているキャッシュを手動削除することで解決する。

ブラウザ利用の場合

image.png

  • 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
0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?