kintone の計算式にもIF関数が追加されましたが、機能や使い方に違いがありますので、整理してみます。
標準計算式と計算式プラグイン比較概要
kintone 標準の計算式は、あまり複雑にならないように配慮しているのに対して、計算式プラグインはいろいろな要望に対応できるように関数の種類も多いです。
用途・方針に合わせて、使い分けてください。
標準計算式 | 計算式プラグイン | |
---|---|---|
条件分岐 | IF関数 | IF, IFS, SWITCH関数 |
IF関数のネスト | 〇 | 〇 IFS, SWITCH推奨 |
IF関数の書き方 | IF(条件式,真の場合,偽の場合) | IF(条件式,真の場合[,偽の場合)] |
条件式 | =, !=, <>, <, >, <=, >= を使った式と論理関数 | 計算式 |
比較演算子 | =, !=, <>, <, >, <=, >= | =, !=, <>, <, >, <=, >=, ==, ===,!== |
比較関数 | CONTAINS | IN, TEST, TESTRE |
論理演算子 | なし | &&, || |
論理関数 | AND, OR, NOT | BOOL, AND, OR, XOR, NOT |
算術演算子 | +, -, *, /, ^ | +, -, **, /, ^, ***, % |
文字列演算子 | & | & |
集計関数 | SUM | AVE, AVEIF, COUNT, COUNTA, COUNTIF, MAX, MAXIF, MIN, MINIF, SUM, SUMIF, PRODUCT, PRODUCTIF, CONCAT, CONCATIF, FIRST, FIRSTIF, LAST, LASTIF, TARRAY, TARRAYIF, TDS, TDSIF, TR_SUM, MAX_STR, TR_MAX, MIN_STR, TR_MIN, TR_AVE |
集計関数の引数に計算式 | × | 〇 |
その他関数 | ROUND, ROUNDDOWN, ROUNDUP, DATE_FORMAT, YEN | ROUND, ROUNDDOWN, ROUNDUP, DATE_FORMAT, NVL, SUBTABLE, ARRAY, ARRAY_GET, ARRAY_COUNT, DISTINCT, DATE_DIFF, DATE_ADD, DATE_STARTOF, DATE_ENDOF, DURATION, DURATION_AS, DURATION_GET, DURATION_FORMAT, ASC, JIS, HIRAGANA, KATAKANA, FIND, SEARCH, CEIL, FLOOR, TEXTJOIN, REPLACE, REPLACEALL, REPLACERE, SPLIT, JOIN, UPPER, LOWER, LEFT, MID, RIGTH, SLICE, SUBSTR, SUBSTRING, LENGTH, NEWLINE, SEL_CODE, SEL_NAME, LOGIN_NAME, LOGIN_CODE, LOGIN_EMAIL |
循環参照 | × | 〇 計算結果を収束させる前提 |
設定項目タイプ | 計算,文字列(1行) | 文字列(1行),数値,文字列(複数行),リッチエディター,チェックボックス,ラジオボタン,ドロップダウン,複数選択,リンク,日付,時刻,日時,ユーザー選択,ルックアップ,組織選択,グループ選択 |
使用できる項目 | 数値,計算,日時,日付,時刻,作成日時,更新日時,ルックアップ,文字列(1行),ドロップダウン,ラジオボタン,作成者,更新者 | 数値,計算,日時,日付,時刻,作成日時,更新日時,ルックアップ,文字列(1行),ドロップダウン,ラジオボタン,作成者,更新者,レコード番号,レコードID,文字列(複数行),リッチエディター,チェックボックス,複数選択,リンク,ユーザー選択,カテゴリー,ステータス,組織選択,グループ選択 |
計算方法 | API | JavaScript による解析・実行 |
CSV読込 | 〇 | × |
REST API | 〇 | × |
アプリ流用時の引継ぎ | 〇 | △ プラグイン設定のダウンロード・アップロードで対応 |
※2020/2/10 時点
条件分岐処理
条件分岐処理でIF関数を使いますが、複雑な条件の場合は、AND, OR, NOT 関数などを組合せます。
処理が3種類以上ある場合は、IF関数のネスト(階層)で対応しますが、なかなか分かりにくい計算式になりがちです。
計算式プラグインでは、IFS, SWITCH関数で記述すると可読性が上がり、パフォーマンスも改善します。
標準計算式 | 計算式プラグイン | |
---|---|---|
単純なIF | IF(ドロップダウン="A",1,0) | IF(ドロップダウン="A",1,0) |
IFのネスト | IF(ドロップダウン="A",1, IF(ドロップダウン="B",2,0)) |
IF(ドロップダウン="A",1, IF(ドロップダウン="B",2,0)) |
IFS | IFS( ドロップダウン="A",1, ドロップダウン="B",2, 0) |
|
SWITCH | SWITCH(ドロップダウン, "A",1, "B",2, 0) |
IF関数の書き方
標準計算式 | 計算式プラグイン | |
---|---|---|
IF関数の書き方 | IF(条件式,真の場合,偽の場合) | IF(条件式,真の場合[,偽の場合]) |
計算式プラグインの場合、「偽の場合」を省略でき、省略時は""となります。
IF(ドロップダウン="A",1) ⇒ IF(ドロップダウン="A",1,"")
条件式
標準計算式 | 計算式プラグイン | |
---|---|---|
条件式 | =, !=, <>, <, >, <=, >= を使った式と論理関数 | 計算式全般 |
標準計算式が、比較演算子と論理関数で条件式を記述します。
計算式プラグインでは、比較演算子と論理関数の他に計算式全般を記述でき、計算結果を評価します。
- 計算式プラグインの計算結果評価
計算結果 | 評価 | 例 |
---|---|---|
空文字 | false | "" |
空文字以外の文字列 | true | " ", "ABC", "0" |
数値 0 | false | 0 |
数値 0以外 | true | 1, 10, -1 |
配列, オブジェクト | true | ARRAY() |
比較演算子
比較演算子は、標準計算式と計算式プラグインで微妙に挙動が異なります。
大まかには、型変換して比較するかどうかです。
標準計算式 | 計算式プラグイン | |
---|---|---|
比較演算子 | =, !=, <>, <, >, <=, >= | =, !=, <>, <, >, <=, >=, ==, ===,!== |
比較演算子 | 標準計算式 | 計算式プラグイン |
---|---|---|
= | 文字列または数値の値が等しければTRUE、等しくなければFALSEを返します。型が異なる比較はFALSEになります。 | 文字列または数値の値が等しければTRUE、等しくなければFALSEを返します。型が異なる比較は数値に換算できる場合は、数値比較。換算できない場合は、文字列比較 |
== | なし | =と同様の結果になります。 |
=== | なし | 標準計算式の「=」と同様 |
!= | 「=」の比較結果を反転させたものになります。型が異なる比較はTRUEになります。 | 「=」の比較結果を反転させたものになります。 |
!== | なし | 標準計算式の「!=」と同様 |
<> | !=と同様の結果になります。 | !==と同様の結果になります。 |
< | 数値で左の値より小さければTRUE、大きければFALSEを返します。 | 数値変換できる場合は、数値比較。数値換算できない場合は、文字列比較 |
<= | 数値で左の値以下であればTRUE、以上であればFALSEを返します。 | 数値変換できる場合は、数値比較。数値換算できない場合は、文字列比較 |
> | 数値で左の値より大きければTRUE、小さければFALSEを返します。 | 数値変換できる場合は、数値比較。数値換算できない場合は、文字列比較 |
>= | 数値で左の値以上であればTRUE、以下であればFALSEを返します。 | 数値変換できる場合は、数値比較。数値換算できない場合は、文字列比較 |
- 条件式の例
条件式 | 標準計算式 | 計算式プラグイン |
---|---|---|
0=0 | true | true |
0="0" | false | true |
0==="0" | - | false |
"ABC"="ABC" | true | true |
0<10 | true | true |
0<"10" | - | true |
"0"<10 | - | true |
"0"<"10" | - | true |
"ABC"<"ABC" | - | false |
"AB"<"ABC" | - | true |
比較関数
IN, TEST, TESTRE 関数が計算式プラグインで使えます。
IN関数は、標準でも欲しい。
比較関数 | 標準計算式の例 | 計算式プラグイン |
---|---|---|
CONTAINS | CONTAINS(チェックボックス,"A") | IN(チェックボックス,"A") |
IN | OR(ドロップダウン="A", ドロップダウン="B") |
IN(ドロップダウン,"A","B") |
TEST | TEST(会社名,"株式会社","合同会社") | |
TESTRE | TESTRE(会社名,"[株式|合同]会社") |
論理演算子・論理関数
論理演算 | 標準計算式の例 | 計算式プラグイン |
---|---|---|
BOOL 論理値変換 |
BOOL(ドロップダウン) | |
AND 論理積 |
AND(ドロップダウン1="A", ドロップダウン2="B") |
AND(ドロップダウン1="A", ドロップダウン2="B") |
&& 論理積 |
ドロップダウン1="A" && ドロップダウン2="B" |
|
OR 論理和 |
OR(ドロップダウン="A", ドロップダウン="B") |
OR(ドロップダウン="A", ドロップダウン="B") |
|| 論理和 |
ドロップダウン="A"||, ドロップダウン="B" |
|
NOT 否定 |
NOT( OR(ドロップダウン="A", ドロップダウン="B") ) |
NOT( OR(ドロップダウン="A", ドロップダウン="B") ) |
XOR 排他論理和 |
XOR(ドロップダウン="A", ドロップダウン="B") |
集計関数
集計関数 | 標準計算式 | 計算式プラグイン |
---|---|---|
SUM | SUM(数値) | SUM(数値) |
条件で集計 | SUM(計算) ※計算項目でIF(ドロップダウン="A",数値,0) |
SUM(IF(ドロップダウン="A",数値)) |
条件付き関数 | - | SUMIF(ドロップダウン="A",数値) |
- 集計関数使用例
![2020-02-10_21h06_43.png](https://qiita-user-contents.imgix.net/https%3A%2F%2Fqiita-image-store.s3.ap-northeast-1.amazonaws.com%2F0%2F100572%2F12a5ad8d-8223-25ae-6d3e-01ee1fefb508.png?ixlib=rb-4.0.0&auto=format&gif-q=60&q=75&s=a4c8b5c5c8dd8f5608e8a66056496e94)
参考
kintone ヘルプ 計算式の設定
kintone 計算式プラグイン
あとがき
計算式プラグインは、いろいろ関数を追加していったのでごちゃごちゃしてしまった。
kintone 、Excel、JavaScript の関数が混在している感じ。
一度公開した機能は、もう外せないのでこの状況は変わらないでしょう。