AppSheetで保存や同期が止まるとき:列の型・キー・権限の切り分け
AIを使いこなすClaudeで執筆し、GPTで自動校閲・修正しています。

AppSheetで保存や同期が止まったときは、エラー文を読み込む前に「直前にデータ構造を変えたか」「キー列は一意か」「列の型や必須条件に合わない値が入っていないか」「テーブルの更新モードは許可されているか」「データ元(スプレッドシートなど)に誰の権限でアクセスしているか」を、この順で確認するのがおすすめです。この順番は、確認の手間が小さいものから並べた編集上の整理で、原因の多さを調べた統計ではありません。 この記事では、その確認リスト、見つけた内容を残す再現メモの書き方、AIに相談するときの依頼文の例を紹介します。AppSheetの画面名や設定名は更新されることがあるため、手元のエディタの表示と照らして読んでください。
この記事の目次
まず押さえる前提:エラーコードは「どの層の問題か」を教えてくれる
AppSheetの公式ヘルプには、エラーメッセージの一覧があります。2026年10月30日に本文を確認しました。参照先はAppSheetのエラーと警告の一覧です。
この一覧を眺めると、エラーは大きく次の層に分かれます。
- データ構造:列名や列の数が、アプリ側の定義とずれている(APPDEF INCORRECTCOLUMNNAMES、APPDEF INCORRECTCOLUMNNUMBERS)。公式の説明では、スプレッドシートの見出しを変えたのに列構造を作り直していない場合などが原因として挙げられています。
- キー:テーブルにキーがない(KEY ABSENT)、キーを自動で判定できない(SCHEMA CANTDEDUCEKEY)、行番号をキーにできないデータ元で使っている(SCHEMA ROWNUMBER KEY NOT SUPPORTED)。
- 列の型:型が不正・情報不足(TYPE DOESNOTEXIST、TYPE INCOMPLETE)、数式の結果が列の型と合わない(APPFORMULA TYPEMISMATCH)。
- 更新の可否:テーブルが新規追加を許さない設定になっている(CONTROL NEW)、読み取り専用の扱いになっている(TABLE READONLY)。
- アクセス権:ログイン情報の期限切れ(EXPIRED ACCESS TOKEN)、ユーザーのサインインが必要(ASUSER SIGNIN)、ファイルの削除や権限の問題でデータを読めない(TABLE CANTREAD)、指定したシートが存在しない(GSHEET CANTREAD)。
つまり、エラーコードが見えるなら、まずどの層かを判断できます。ただ、画面では「同期に失敗しました」程度しか出ず、コードが分からないことも多いはずです。そのときのために、次の章の順番で切り分けます。
切り分けの順番:5つの確認
1. データ構造を変えていないか
最初に確認するのは、直前の自分の作業です。
- スプレッドシートの1行目(列見出し)の名前を変えた、列を足した、消した、並べ替えた。
- シート(タブ)の名前を変えた、削除した。
- ファイルを別のフォルダへ移した、コピーして使い始めた。
列見出しや列構成を変えた場合は、エディタでテーブルの列構造を再生成して、差を確認します。公式手順では、Dataで対象テーブルを選び、Regenerate schemaを使います。再生成はアプリの動作に影響する場合があり、アプリの変更も保存されるため、実行前に現在の設定をスクリーンショットで残してください。シート名やファイルを変えた場合は、まずテーブル設定のSource pathやWorksheet Name/Qualifierなどを確認し、実際の参照先に合わせます。
2. キー列は一意で、途中で変わっていないか
キーは、各行を見分けるための列です。公式ヘルプでは、各行のキー値は一意で、その行が存在する間は変わらないことが必要とされています。確認したいのは次の点です。
- キー列に空欄や重複した値がないか。
- キーに「行番号」を使っていないか。公式の一覧には、行番号をキーにできないデータ元の警告があります。行番号は並べ替えや削除で意味が変わるため、編集があるアプリでは避けるのが無難です。
- 保存済みの行のキー値を手で書き換えていないか。
「名前」や「メールアドレス」をキーにする場合も、重複せず変わらない値かを確認してください。迷ったら、スプレッドシートにキー専用のText列を作り、Keyに指定して、初期値(Initial Value)にUNIQUEID()を設定する方法があります。初期値は新規行の作成時に計算されるため、既存行の空欄は埋まりません。既存データへ導入する場合は、先にシートのバックアップを取り、公式手順に沿って既存の各行に一意の固定値を用意してから切り替えてください。参照関係がある場合は、キー変更の影響も確認してください。
3. 列の型・必須・検証に合わない値がないか
保存ボタンを押しても進まないとき、フォームの赤字が画面の外にあって見えていないことがあります。
- 数値列に「3個」のような文字が入っている(スプレッドシート側で直接入力したデータで起きがちです)。
- 日付列に、日付として読めない文字列が入っている。
- Enum(選択式)列で、選択肢にない値が入っている。
- 必須(Require?)の列が空のまま。
- 計算式(App formula)の結果が、列の型と違う。
対処の基本は、問題の行をテスト用にコピーして試すことです。新しい1行を必須条件を満たす最小限の値で追加して保存できるなら、既存行の値や行ごとの条件が候補になります。キーや必須項目を保ち、任意項目の値を1つずつ変えて試すと、どの列かを絞れます。
4. テーブルの更新モードが許可しているか
データは読めるのに、追加・編集・削除だけ失敗するなら、テーブルの更新モードを見ます。公式手順では、Dataで対象テーブルを選び、Table settingsのAre updates allowed?を確認します(旧エディタではData > Tables)。更新モードの説明にあるUpdates・Adds・Deletes・Read-onlyの設定で、目的の操作が許可されているか確認してください。公式の一覧でも、新規追加を許さない設定とアクションの組み合わせ(CONTROL NEW)や、読み取り専用の扱い(TABLE READONLY)がエラーとして載っています。
あわせて、アクション側の条件(そのボタンが表示される条件式)や、ユーザーごとの役割で制限をかけていないかも確認してください。
5. データ元とアプリ利用者のアクセス権
最後に、スプレッドシートなどへのアクセス権です。ここは、自分では動くのに他の人では失敗する、という症状で疑います。
- 自分のアカウントでは保存できるが、共有した相手では失敗する。
- データへのアクセスに使うアカウントが、スプレッドシートを編集できない。
- テーブルのAccess modeが、利用者本人の権限でアクセスするas app userになっている。この方式では、アプリへのサインインと、各利用者がデータ元のスプレッドシートとフォルダへ直接アクセスできる権限が必要です。
- ログイン情報の期限が切れている。公式の対処はいったんログアウトして入り直すことです(EXPIRED ACCESS TOKEN)。
- ファイルが削除された、またはシートがない(TABLE CANTREAD、GSHEET CANTREAD)。
まず、テーブル設定のAccess modeを確認してください。公式ヘルプによると、既定のas app creatorではアプリ作成者の権限でアクセスするため、利用者がシートを直接編集できなくてもアプリから更新できます。この場合は作成者の権限を、as app userの場合は失敗する利用者の権限を確認し、そのアカウントでシートを直接開いて編集できるかを試します。
判断表:症状から最初に見る場所
- 列やシートをいじった直後から全体が止まる、最初に見る場所:1. データ構造、次の一手:列構造を再生成する前に設定を控える
- 新規追加は通るが、特定の行だけ失敗する、最初に見る場所:3. 型・必須、次の一手:テスト用の行で、キーと必須項目を保って値を変える
- 特定の行を更新・削除すると別の行が変わる、最初に見る場所:2. キー、次の一手:キーの重複・行番号キーを確認
- 閲覧はできるが、保存だけ失敗する、最初に見る場所:4. 更新モード、次の一手:テーブル設定とアクション条件を確認
- 自分は成功、他の人は失敗、最初に見る場所:5. アクセス権、次の一手:Access modeを確認し、データへのアクセスに使うアカウントの権限を確認
- 一定時間後にだけ失敗する、最初に見る場所:5. ログイン情報の期限、次の一手:ログアウトして入り直す
キーの重複があると、意図しない行が更新・削除される場合があることは、キーの公式説明にも記載されています。
再現メモの書き方(コピーして使えます)
原因を探すときも、人やAIに相談するときも、記録があると速くなります。次の形式で、1回の失敗につき1件書きます。下の記入例は説明用の例で、実際の検証結果ではありません。
【再現メモ】
日時:2026-10-28 14:30ごろ
操作したアカウント:オーナー / 一般利用者(どちらか)
端末:スマホ(iOS) / PC
操作:「在庫」テーブルで「追加」フォームから保存
表示されたメッセージ:(原文をそのまま)
直前に変えたこと:シートの列「数量」を右へ移動
成功する操作:既存行の閲覧、別テーブルの追加
失敗する操作:「在庫」への追加
最小の再現:必須条件を満たす最小限の値で追加→(成功/失敗)
疑う層:構造 / キー / 型 / 更新モード / 権限ポイントは「成功する操作」も書くことです。閲覧は成功し追加だけ失敗するなら、第4章の更新モードやアクション条件が候補になります。全部失敗するなら、第1章や第5章が候補です。
AIに相談するときの依頼文の例
メッセージ原文と設定の説明を渡せば、AIは「どの層か」の整理を手伝えます。ただし、AIはあなたのアプリを見ていません。出てきた候補は、人がエディタ上で確認してください。
渡してよいのは、ダミーに置き換えた情報です。実在の氏名、メールアドレス、顧客データ、シートのURL、APIキーは入れないでください。
AppSheetで保存が失敗します。以下の再現メモをもとに、
疑う順番を「構造→キー→型→更新モード→権限」の枠で整理してください。
断定せず、各候補に「エディタのどこで何を見れば確認できるか」を添えてください。
【再現メモ】(上の形式で貼る)
【テーブル構成(ダミー)】
在庫:ID(キー)、品名(Text)、数量(Number)、更新日(Date)
キーの初期値:なし
更新モード:(分かる範囲で)返ってきた回答のうち、設定名や画面の場所は古い、または実際の表示と違う場合があります。手元の画面に同じ項目がなければ、その手順は採用せず、公式ヘルプで名称を確認してください。
それでも解決しないとき
上の5つで絞れない場合は、次の順で進めます。
- 新しい空のスプレッドシートに、キー列と1列だけのテーブルを作り、同じ操作を試す。成功すれば、元のデータや設定に原因があります。
- 元のテーブルから列を少しずつ足し、失敗し始める列を特定する。
- 再現メモとエラー原文をそろえて、AppSheetのコミュニティやサポートに相談する。
Google WorkspaceやAppSheetの契約プランによって、利用できる機能や手続きが異なる場合があります。自分の環境でできる範囲は、管理者の案内や公式ヘルプで確認してください。

