AppSheetを使っていると次のようなエラーに出くわすことがあります。
「Data action ‘アクション名’ uses an invalid new column value expression ‘=SUM( SELECT( テーブル名[カラム名], [_THISROW].[カラム名]=[カラム名] ) )’. The ‘SUM’ function requires a list of numeric inputs」
ここではこのエラーの発生原因と対処法についてまとめています。
エラーの発生状況
今回発生したエラーは次のようなものです。
Data action ‘本一覧の残数更新’ uses an invalid new column value expression ‘=SUM( SELECT( 本一覧[全数], [_THISROW].[書籍名]=[書籍名] ) )’. The ‘SUM’ function requires a list of numeric inputs
内容はSUM関数は一連の数値を必要とするというものです。
ここでは「本一覧」テーブルの「残数」カラムに次のような数式をセットしました。
SUM( SELECT( 本一覧[全数], [_THISROW].[書籍名]=[書籍名] ) ) - COUNT( SELECT( 貸出管理マスター[書籍名], AND( [_THISROW].[書籍名] = [書籍名], [判定]="貸出" ), false ) ) + COUNT( SELECT( 貸出管理マスター[書籍名], AND( [_THISROW].[書籍名] = [書籍名], [判定]="返却" ), false ) )
対象の書籍名をもつ本の全数の足し合わせから、貸出中の本の数を引き、返却済みの本の数を足すという処理になります。
このエラーは冒頭のSUM関数で発生しているエラーです。
SUM( SELECT( 本一覧[全数], [_THISROW].[書籍名]=[書籍名] ) )
エラーの発生原因
SUM関数を適用している大本のスプレッドシートを確認すると、対象のカラム「全数」は全て数値で入っていることがわかります。
この時点では全く問題なさそうです。
そこで、いったん数式を削除してエラーが発生しない適当なものに置き換えます。
ビューが表示されるので、ビューの中身を確認します。すると本来数値であるはずの「全数」カラムの値が日付になっていることがわかります。
つまり、AppSheet上で日付になっている値をSUM関数で合計しようとしたために発生したエラーということです。
対処法
カラムを確認するとTypeが「Date」になっています。これではSUMできるわけがありません。
これを適切なタイプ(ここではNumber)に変更します。
「SAVE」をクリックすると、「全数」が適切な状態に戻りました。
先ほど変更したアクションの数式を元に戻します。
「SAVE」をクリックして保存します。
エラーが発生することなく、保存することができました。
以上で完了です。
The ‘SUM’ function requires a list of numeric inputsというエラーが発生した場合は、対象となっているテーブルのカラムのTypeが計算可能な数値になっているか確認してみるとエラーが解消できるかもしれません。