【AppSheet】エラー対処法:Column Name ‘カラム名’ in Schema ‘テーブル名_Schema’ has a Sheet Formula as well as an App Formula. This is not allowed. 警告マークの解決法

app sheet アップシート appsheet-prograshi(プロぐらし)-kv AppSheet
記事内に広告が含まれていることがあります。

AppSheetを使っていると以下のようなエラーが発生することがあります。ここでは、このエラーの対処法についてまとめています。

エラーの内容

Column Name ‘カラム名’ in Schema ‘テーブル名_Schema’ has a Sheet Formula as well as an App Formula. This is not allowed.



エラーの内容

このエラーは次のような意味になります。

「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,"")


RCとは何か?

数式の中にRC[-1]やC2:C2, C7:C7という表記が出てきましたが、これが何を示しているかについては下記をご参考ください。

(参考)【スプレッドシート】RCとは何か?RとCの後ろの数値やカッコとマイナスになった場合の意味|R2C5やR[-2]C[3]、RC[-1]、R[3]Cなど





対処法

SpreadSheet formulaの数式を削除する

対処法は1つです。

対処法

SpreadSheet formulaの数式を削除する


数式が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)」に変更すれば、きちんと表示されるようになります。

タイトルとURLをコピーしました