AppSheetを使っていると次のようなエラーに出くわすことがあります。
それぞれ関連性が高いエラーです。
ここではこの3つのエラーそれぞれの発生原因と対処法についてまとめています。
- エラー1の原因と対処法:cannot use an app formula. The app formula will be removed.
- エラー2の原因と対処法:cannot use an EditableIf constraint if it has an App Formula. The EditableIf constraint will be ignored.
- エラー3の原因と対処法:cannot be readonly if its Formula field has an expression. The readonly flag has been disabled.
- FORMULA(App formula)とEDITABLE?の関係
エラー1の原因と対処法:cannot use an app formula. The app formula will be removed.
エラー1の原因
まず1つ目のエラーは下記になります。
これは、KEYに設定したカラムにApp Formula(FORMILA)を設定することはできません。数式を削除しますという内容です。
おそらくこのエラーで一番困るのはせっかくFORMULAに記述した数式が跡形もなく消え去ることです。長い数式をようやく書いてTESTもクリアしていざ保存したら数式が消えた、、、ということが発生します。悲しいですね。。
エラー1の対処法
対処法1:別のカラムをKEYにする
対処法は簡単です。FORMULAにどうしても数式を記述して自動計算させたい場合は、そのカラムのKEY?のチェックを外します。
対処法2:数式をINITAL VALUEに記述する
どうしてもこのカラムをKEYとして使いたいという場合は、数式を「INITAL VALUE」に記述します。
こうすることで、KEYに設定したカラムでも数式を適用することができます。
KEYに設定したカラムでINITAL VALUEに数式を設定した場合、基本的にはEDITABLEのチェックは外したいはずです。その時は下記記事を参考にしてください。
(参考)【AppSheet】EDITABLE?のチェックが外せないときの対処法|SAVEすると勝手にチェックが入る
エラー2の原因と対処法:cannot use an EditableIf constraint if it has an App Formula. The EditableIf constraint will be ignored.
エラー2の原因
もう一つのエラーは以下のようなものです。
これは、App Formula(FORMULA)が設定してある場合、EditableIf制約を使用できません。 EditableIf制約は無視されます。という内容です。
EditableIfとは、EDITABLE?に条件式を設定した状態のことです。(単にチェックを付けたり外した利した状態とは異なります)
例えば、以下のように「Editable?」に数式をセットすると、Editable_ifを設定した状態となります。
エラー2の対処法
エラー2のApp Formula(FORMULA)が設定してある場合、EditableIf制約を使用できません。 EditableIf制約は無視されます。というエラーが発生したときは、
Editable?に設定してある数式を削除します。これでエラーは無くなります。
ただし、これだと自分の思った通りにEditable?を制御することはできません。
そんなときは、「FORMULA」の数式を「INITAL VALUE」に記述します。こうすることで、EDITABLE?に数式を適用することができるようになります。
エラー3の原因と対処法:cannot be readonly if its Formula field has an expression. The readonly flag has been disabled.
エラー3の原因
もう一つのエラーは以下のようなものです。
内容は、FORMULAフィールドに数式が含まれている場合、読み取り専用にできません。読み取り専用フラグを無効にします。というものです。
バーチャルカラムでない通常のカラムのFORMULA(App formula)に数式を記述して、EDITABLE?のチェックを外した場合に発生します。
エラー3の対処法
このエラーが発生したときは、Editable?のチェックが付いたままの状態にします。
ただし、これだと自分の思った通りにEditable?を制御することはできません。
そんなときは、「FORMULA」の数式を「INITAL VALUE」に記述します。こうすることで、EDITABLE?の数式で「false」を適用し編集不可にすることができるようになります。
FORMULA(App formula)とEDITABLE?の関係
通常、FORMULA(App formula)の数式を記述すると、強制的にEDITABLE?の値が制御されます。
ここで、ポイントとしては、通常のカラムの場合はEDITABLE?は必須(常に編集可能)であり、バーチャルカラムの場合は必ずチェックが外れる(常に編集不可)になるということです。