フィールド式は、kintoneアプリの1つのフィールドの値を更新するための式です。
すべてのフィールド式は等号( =
)で開始します。
実際の入力画面では、等号はカーソルを入力欄に当てると自動で入力されます。
定数および計算演算子を使用して、簡単な式を作成できます。たとえば、あるフィールドにフィールド式 = 2 * 3 + 2
を入力し、保存したアプリのレコードで更新を実行した場合、このフィールドの値は 8
となります。
定数の代わりに変数を参照することもできます。 データコレクトでは、フィールド式を設定するアプリ自身の他のフィールドを参照したり、登録した他のアプリのフィールドを参照することができます。
IF
COUNT
SUMIF
などの関数を使用して式を組み立てることで自由自在に計算ができます。
このページではフィールド式を使った計算方法について解説します。
「他のフィールド」はフィールド式を設定しようとしているアプリの、更新対象のレコードの他のフィールドのことを指します。
他のフィールドを参照するには、 フィールドコード
と書きます。
フィールドコードはkintoneのアプリに設定しているフィールドコードのことです。
例えば、「単価」というフィールド名で「数値」というフィールドコードのフィールドを参照する場合、 数値
となります。
フィールド式の設定画面では、入力欄の上のフィールド名が表示されているラベルをクリックすると、参照するための式をコピーすることができます。
フィールド式による計算結果が反映される前のフィールドの値を参照することができます。
= フィールドコード
と書いた場合、フィールド式の依存関係を考慮して計算を行った後の値を参照します。
そのため、フィールド式を書いているフィールドに対して同じフィールドを参照することは循環参照となりできません。
例えば、条件を初めて満たした場合だけ値を入れたいといったときに、
= IF(AND(フィールドコード <> "", COUNTIF(契約管理!契約状況, "=契約済み") > 0), TODAY(), フィールドコード)
のように書くことはできません。
ここで、更新対象フィールドコードの先頭に __!
を記載すると、そのフィールドのフィールド式による更新前の値を参照できます。
これを利用すると上記の式は
= IF(AND(__!フィールドコード <> "", COUNTIF(契約管理!契約状況, "=契約済み") > 0), TODAY(), __!フィールドコード)
のように書くことができます。
フィールド式入力中のポップアップのアプリ一覧において、フィールド式を記載しているアプリを選択すると、「更新前の値を参照する」というチェックボックスが表示されます。これにチェックを入れた状態でフィールドの行をクリックすると、 __!フィールドコード
が挿入されます。
「他のアプリ」は新規アプリ追加で登録した全てのアプリのことを指します。
他のアプリのフィールドを参照するには、 アプリ名!フィールドコード
と書きます。
上述の「他のフィールド」は更新対象のレコード1つそのものの値を指しますが、「他のアプリ」はアプリ全体、つまりkintoneの(すべて)のレコード一覧で表示される全レコードの値を指します。
そのため、 アプリ名!フィールドコード
は複数レコードの値を指すため、そのまま = アプリ名!フィールドコード
としては使用できません。
例えば、アプリ名「契約」であるアプリの「契約金額」の和を計算したい場合は、 = sum(契約!契約金額)
とします。
アプリには絞り込み条件を設定できます。設定した絞り込み条件を使用することで、「他のアプリ」を絞り込み条件で絞り込んだレコードのみを、計算対象のレコードとして使うことができます。
絞り込み条件を使って他のアプリを参照するには、 アプリ名!絞り込み条件名!フィールドコード
と書きます。
例えば、アプリ名「契約」であるアプリに「当月の契約」という絞り込み条件を設定している時の「契約金額」の和を計算したい場合は、
= sum(契約!当月の契約!契約金額)
とします。
フィールド式ではサイドメニューに記載されている関数を使用することができます。
関数は入れ子に(ネスト)して記述することが出来ます。
例えば、
WEEKDAY(TODAY())
: 今日(更新を実行した日)の曜日を取得IF(予算 < SUM(アプリA!今月!売上),"予算達成","未達")
: アプリAに登録されている今月の売り上げ合計と予算を比較して、売上合計が予算を超えているかどうかで異なる表記にする足す +
引く -
掛ける *
割る /
冪乗 ^
の各演算子が使用できます。
+
と-
については、日付、時間、日時の計算をすることもできます。
式 | 計算結果 | 説明 |
---|---|---|
1 + 2 | 3 | 1と2を足す |
5 - 3 | 2 | 5から3を引く |
6 * 5 | 30 | 6に5を掛ける |
30 / 6 | 5 | 30を6で割る |
2 ^ 10 | 1024 | 2を10乗する |
"2024-04-01" + 1 | 2024-04-02 | 2024-04-01の1日後を計算 |
"2024-04-01" - 1 | 2024-03-31 | 2024-04-01の1日前を計算 |
"2024-04-08" - "2024-04-01" | 7 | 2024-04-08は2024-04-01の何日後か計算 |
2024-04-01 | 2015 | ""で囲わないと、-が引き算として解釈され、日付として扱われない |
"20:00" + "00:30" | 20:30 | 時間の足し算 |
"20:00" + "06:00" | 26:00 | 24時間を超える例 |
"20:00" - "18:00" | 2:00 | 時間の引き算 |
"5:00" - "7:00" | -2:00 | 負の時間の例 |
"5:00" + "-2:00" | 3:00 | 負の時間の例 |
"2024-04-20 04:00" + "2:00" | 2024-04-20 06:00 | 2時間後の日時を計算 |
"2024-04-20 04:00" + 1 | 2024-04-21 04:00 | 1日後の日時を計算 |
"2024-04-20 06:00" - "2024-04-20 04:00" | 2:00 | 日時と日時の間隔は何時間か計算する |
"2024-04-20 06:00" - "2:00" | 2024-04-20 04:00 | 2時間前の日時を計算 |
"2024-04-20 04:00" - 2 | 2024-04-18 04:00 | 2日前の日時を計算 |
文字列を入力するためには、ダブルクォートで文字を囲みます。
例えば、 "文字"
のようにすることで、文字列を式中で使うことができます。
また &
を使って文字列を結合することができます。
例えば = "文字"&"列"
とすると、 文字列
のように文字列を結合することができます。
「他のフィールド」も文字列結合の対象と出来ます。
例えば 姓
と 名
が入っているフィールドがそれぞれある場合、 = 姓&" "&名
のようにすることで 山田 太郎
のような文字列を作ることが出来ます。
<
や <>
などの比較演算子を、IF
やIFS
などの関数と組み合わせることで、
条件分岐して計算の結果を変えることができます。これらの演算子で、日付、時間、日時の大きさを比較することもできます。
比較演算子 | 意味 |
---|---|
A = B | AとBは等しい |
A <> B | AとBは等しくない |
A < B | AはBより小さい |
A <= B | AはB以下 |
A > B | AはBより大きい |
A >= B | AはB以上 |
式 | 計算結果 | 説明 |
---|---|---|
IF(1 = 2, "正", "誤") | 誤 | 1と2は等しくないため誤 となる |
IF(1 <> 2, "正", "誤") | 正 | 1と2は異なるため正 となる |
IF(1 < 2, "正", "誤") | 正 | 1は2よりが大きいため正 となる |
IF(1 > 2, "正", "誤") | 誤 | 1は2より大きくないため誤 となる |
IF(1 <= 2, "正", "誤") | 正 | 2は1以上であるため正 となる |
IF(1 <= 1, "正", "誤") | 正 | 1は1以上であるため正 となる |
IF(1 >= 2, "正", "誤") | 誤 | 1は2以上でないため誤 となる |
IF(1 >= 1, "正", "誤") | 正 | 1は1以上であるため正 となる |
IF("2024-04-20" < "2024-04-21", "正", "誤") | 正 | 2024-4-20は2024-4-21より前の日付であるため正 となる |
IF("10:00" < "20:30", "正", "誤") | 正 | 10時より20時30分は前であるため正 となる |
IF(今月の残業時間 < "10:00", "残業が10時間以内です", "残業が10時間以上です") | (「今月の残業時間」というフィールドに依存して結果が変わる) | 残業時間が基準より多いか判定します |
IF("2024-04-20 01:00" < "2024-04-20 12:00", "正", "誤") | 正 | 2024年4月20日1時は2024年4月20日の12時より前の日時であるため正 となる |