Kintoneのテーブルと関数組合せの留意点
Kintoneの計算式で使える関数のうち以下の関数は、テーブルと組み合わせて使う場合に制限事項があるのを知らないでハマってしまったので、今回はそのお話です。
Kintoneの計算式で使える関数の種類は、以下のヘルプで参照できます
関数の説明(ヘルプ)
IF関数
IF関数は、テーブル内では使用可能ですが、テーブルの外からテーブル内の値を計算式の対象にすることは出来ません。
テーブルに設定したフィールドは、テーブル外からは、SUM関数でのみ参照できます。
なので、SUM関数とIF関数を組み合わせて、エクセルのSUMIF関数の様な動きをさせようとしてもエラーになります。
上記の交通費精算アプリでは、費目フィールドに電車代、宿泊費、その他の3種類の値を選択できる様に設定し、テーブル外の計算フィールドの計算式に以下の様に関数を設定しています。
合計金額:SUM(金額)、電車代合計:SUM(IF(費目="電車代",金額,0)
電車代合計の計算式は、費目フィールドの値が電車代なら金額をSUM関数で合計する様な動きを期待しても、文法エラーになります。
テーブルに設定したフィールドは、テーブル内でのみIF関数が使用できます。例えば、以下の画面例の様にテーブルの各行で費目の値をIF関数で判断して値をセットすることが可能です。
電車代の列では、計算フィールドで、IF(費目="電車代",金額,"") という計算式を設定しています。
一応、費目別の合計を計算する目的は達成できてますが、テーブルが横長に表示されてしまうというデメリットもあります。
なお、Javascriptカスタマイズでテーブルの値を費目別に小計する事例も掲載しているので、興味が有ればご参照してください。
CONTINS関数
※CONTINS関数は、テーブルの中では使用できません。
テーブルの外から値を対象にした利用のみ可能です。
私は、この現象にハマり、多くの時間をムダにしてしまいました。
テーブル内の計算式にCONTINS関数を用いても、フォームの保存やアプリの更新で文法エラーが出ないので、なおさら厄介でした。
(2023年11月7日現在)
以下の画面では、テーブル内の備考と、テーブル外の休日出勤フィールドに、IF(CONTAINS(曜日,"日曜日"),"休日出勤有り","") と同じ関数を用いた計算式を設定していますが、テーブル内の備考フィールドでは#Value!エラーが発生しています(同じ計算式でもテーブルの中と外で結果が違います)
原因は、テーブル内のフィールドが配列型になっているためだと思われます。
以下のヘルプ画面でも、テーブル外からテーブルのフィールド値を参照する例は掲載されていますが、テーブル内で利用する例は示されていません。
CONTAINS関数の構文例
上記画面の曜日フィールドの判定は、標準機能のIF関数だけで実現しているので、ご興味のある方は以下の記事をご参照ください。