AppSheetを使っていると「Column Name ‘カラム名’ in Schema ‘テーブル名_Schema’ of Column Type ‘型’ has a ‘Sheet Formula’ so the column is being marked ‘Read Only’.」といったエラーに出くわすことがあります。
このエラーの原因と対処法についてまとめています。
エラーの実例と内容
実際のエラーは次のようなものです。「Column Name ‘残数’ in Schema ‘本一覧_Schema’ of Column Type ‘Number’ has a ‘Sheet Formula’ so the column is being marked ‘Read Only’.」
これは、対象のテーブルの対象の型をもつ対象のカラムはシートのFORMULAが設定されているため、読み取り専用となっていますという内容です。
AppSheetの仕様でカラムにFORMULAを設定したときは必然的に読み取り専用となります。詳細は下記をご参考ください。
エラーの原因
このエラーの原因は読み取り専用となっているカラムの値を変更しようとしたために発生したものになります。
発生原因はいくつかありますが代表的なところで言うと、対象のカラムのEDITABLE?にチェックを入れると発生します。(チェックを入れて「SAVE」した後)
他には、アクションで対象のカラムの値を変更しようとしたときも発生します。
Spreadsheet Formulaが記載されている場合も発生する
エラー原因の発見が遅れる理由として、通常のFORMILAは記載していないのに、Spreadsheet Formulaが記載されている場合があります。
例えば次のように「FORMILA」には何も記載されていない場合があります。
このカラムの詳細を見ると、FORMULAに該当する「App formula」に記載はありませんが、代わりに「Spreadsheet formula」に数式が記載されています。
「Spreadsheet formula」はスプレッドシートをテーブルとして読み込んだときに、セットしてあった数式が自動で入ります。
役割的には「FORMULA(App formula)」と同じです。このため対象のカラムは読み取り専用になります。
「Spreadsheet formula」と「FORMULA(App formula)」は共存できずどちらか一方のみしか記載できません。
対処法
対処法は大きく2つです。
おそらく、アクションを設定したいという目的があるため、ここでは、アクションを優先させるためにカラムのFORMULAを削除する方法を示します。
そもそも、Spreadsheet formulaの場合はスプレッドシート読み込み時に自動で追加された数式なので、必要ないことがほとんどです。
↓ この部分を削除します。
「SAVE」をクリックして保存すれば、エラーは消えます。
なお、Spreadsheet formulaの数式を削除しても、スプレッドシートの数式は消えません。再度スプレッドシートを読み込むとまたSpreadsheet formulaに数式が登録されエラーが発生してしまいます。
これを防ぐために、対象のスプレッドシートのデータを値貼りして数式を削除しておくとベターです。