AppSheetを使っていると以下のようなエラーが発生することがあります。ここでは、このエラーの対処法についてまとめています。
エラーの内容
このエラーは次のような意味になります。
「Column Name ‘カラム名’ in Schema ‘テーブル名_Schema’ has a Sheet Formula as well as an App Formula. This is not allowed.」
↓ 翻訳
「このテーブルのこのカラムは、シートの数式とAppの数式の2つがあります。これは許可されていません」
つまり、本来1つのみのはずの数式が2つセットされているということです。
エラーの原因
このエラーの発生原因は例えば次のような場合があります。
スプレッドシートで対象の列(カラム)に数式をセット。この状態でAppSheetでそのシートを読み込み、FORMULAを設定しようとした。
実例
例えば、以下のように「貸出管理マスター」というテーブルの「在庫」カラムの「FORMULA」を以下のようにしたとします。
SELECT( 本一覧[残数], [書籍名]=[_THISROW].[書籍名] )
これは、フォーム上で入力された値に応じて、他のシートからデータを参照するという式です。
これに対して、テーブルの元データとなっているスプレッドシートは以下のようになっています。
=xlookup(D2,'本一覧'!$B:$B,'本一覧'!$G:$G,"")
こちらも、他のシートのデータを参照する数式です。
この2つの数式がセットされているとAppSheet上ではエラーが発生します。カラムの詳細を確認すると「App formula」と「Spreadsheet formula」の両方に数式が入っています。
スプレッドシートの数式の読み込み結果
これは補足ですが、スプレッドシートの数式を読み込むと、冒頭に「ArrayFromula」がつきます。そして、セルの指定がRC形式になります。
=ArrayFormula(xlookup(RC[-1],'本一覧'!C2:C2,'本一覧'!C7:C7,"")
スプレッドシートの数式と比較すると違いがわかりやすいです。
=xlookup(D2,'本一覧'!$B:$B,'本一覧'!$G:$G,"")
対処法
SpreadSheet formulaの数式を削除する
対処法は1つです。
数式が2つあることが問題なので、「FORMULA(App formula)」の数式を削除すればいいのでは?と思いますが、SpreadSheet formulaは上手く機能しないことがあります。
注意点
SpreadSheet formulaの数式を削除する場合、注意しなければいけないことがあります。
AppSheet上で数式を削除しても、スプレッドシート上の数式は残ります。
このため、「Regenerate Schema」で再度読み込みを行うと、また同じエラーが発生してしまいます。
なので、「SpreadSheet formula」を削除して、「FORMULA(App formula)」を使う場合は、スプレッドシート上の数式部分を値貼り付けして数値にしておくといいでしょう。(ある読み込むたびに「Spreadsheet formula」を削除する)
「Spreadsheet formula」の数式を削除すればエラーは消えます。
スプレッドシート上の数式はどうなるか?
ここからは参考です。
AppSheet上で「Spreadsheet formula」の数式を削除しても、スプレッドシート上の数式はそのまま残ります。
AppSheetのビュー上でレコードを追加すると、計算後の数値が保存されます。数式が保存されるわけではありません。
もちろんスプレッドシートで書式設定ありで入力されていた上の行の書式や入力規則なども適用されず、初期設定なしの値で保存されます。
FORMULA(App formula)の数式を削除するとどうなるか?
FORMULA(App formula)の数式を削除するには、直接「FORMULA」を編集するか、
あるいは、カラムの詳細の「Auto Compute」の「App formula」を編集することで削除できます。
しかし、この状態でAppSheet上でレコードを追加しても、指定した数式に基づいた数値は反映されません。
フォームを保存すると、対象のデータに[sync to c….]と表示され何やら計算をしているようです。
しかし、最終的には何も表示されません。
スプレッドシート上も「Spreadsheet formula」に記述した数式が反映されるわけではなく、空欄のセルになっています。
ビューに表示されない
さらに大きな問題があります。
それは、Spreadsheet formulaを入力したカラムをビューで表示する設定にしているにも関わらず、ビューに表示されないという問題です。
もちろん、「Spreadsheet formula」を削除して「FORMULA(App formula)」に変更すれば、きちんと表示されるようになります。