kintone

kintone 計算式プラグイン

kintone 自動計算の機能拡張版プラグインです。

標準機能には無い、条件付き合計計算など、計算式を指定するだけで処理出来ます。

Excel の計算式のような指定方法で、複雑な条件を指定できます。

計算式例: 計算式には、フィールドコードと関数などを指定します。


  • レコード番号 & "-" & DATE_FORMAT(日付1, "YYYY-MM-DD")

  • SWITCH(ドロップダウン,"経理部","経理部TEST","総務部","総務部","営業部","営業部test","その他")

  • SUMIF(ドロップダウン0==="電車(片道)", 数値) + SUMIF(ドロップダウン0==="電車(往復)", 数値)

※動作環境は、PCとスマホです。

rex0220 storesで、販売中です。

※バージョンVer.24 変更点

・項目非表示機能 動的CSSに変更

・項目削除、項目参照不可時のエラー対策

・カレンダーPlus API対応

※2項目非表示機能 動的CSS

Ver.21 ~ Ver.23 までに自動作成された CSS が不要になります。

お手数ですが、「JavaScript / CSSでカスタマイズ」画面で「rex0220_formula_hide.css」があった場合は、削除してください。

※バージョンVer.25 変更点

・TARRAY,TARRAYIF,TDS,TDSIF,NEWLINE 関数追加

・文字列複数行(MULTI_LINE_TEXT) 計算式対応

・CEIL,FLOOR,ROUND 関数の小数点誤差不具合対応

・krewSheet API対応(ベータ対応)

 ベータ版機能として提供させていただきます。

 本機能は、グレープシティ様のサポート対象外です。


計算式応用例


計算式プラグインの設定例

2019-02-24_15h07_07.png


編集画面例

2017-06-07_17h45_34.png


スマホ画面例

ステータス遷移時の計算処理例です。

2017-06-08_21h33_55.png


機能紹介



  • 文字連結


    • レコード番号、ステータスを文字項目に連結

    • 他項目の値で、設定する文字列を切替え




  • 計算


    • サブテーブルの数値を条件付きで合計

    • サブテーブルに未入力行があっても合計




定数


  • 文字: "" で、囲みます。
    "株式会社", "個"


  • 数字: 数字をそのまま記述
    0, 1234, 123.456



演算子


  • 文字連結: &

  • 算術: +,-,,/,%,*,^

  • 比較: =,==,===,!==,>,<,>=,<=,!=,<>

  • 論理: &&,||


関数

関数は、下記のように「(」を空白を入れずに、記述します。

空白があると、fieldcode として扱われます。

 関数名(パラメータ)

OK: CEIL(数値, 1)

NG: CEIL (数値, 1)

関数一覧



  • CEIL: 切り上げ


    • CEIL(fieldcode) 小数点以下を切り上げ

    • CEIL(fieldcode, 小数点位置)

    • 例 CEIL(数値, 1)






  • COUNT: 数値カウント


    • COUNT(fieldcode[,fieldcode...])

    • 例 COUNT(数値)






  • COUNTA: 空白以外カウント


    • COUNTA(fieldcode[,fieldcode...])

    • 例 COUNTA(文字列)






  • COUNTIF: 条件付き数値カウント


    • COUNTIF(condition,fieldcode[,fieldcode...])

    • 例 COUNTIF(文字列=="A", 数値)






  • COUNTROW: サブテーブルの行数


    • COUNTROW(fieldcode)

    • 例 COUNTROW(Table)






  • ROWNO: 処理中のサブテーブル行位置


    • ROWNO(fieldcode)

    • 例 ROWNO(Table)






  • FLOOR: 切り下げ


    • FLOOR(fieldcode) 小数点以下を切り下げ

    • FLOOR(fieldcode, 小数点位置)

    • 例 FLOOR(数値, 1)






  • IF: 条件


    • IF(condition,fieldcode[,fieldcode])

    • 例 IF(文字列=="A", 数値, 数値1)






  • IFS: 複数条件


    • IFS(condition,fieldcode[,condition,fieldcode[,fieldcode]][,fieldcode])

    • 例 IFS(文字列=="A", 数値, 文字列1=="B", 数値1)






  • IN: 値の存在チェック
    ex.


    • IN(fieldcode,string[,string...])

    • 例 IN(文字列, "ABC","DEF","GHI")






  • INT: 整数


    • INT(fieldcode)

    • 例 INT(数値/2)






  • ROUND: 四捨五入


    • ROUND(fieldcode) 小数点以下を四捨五入

    • ROUND(fieldcode, 小数点位置)

    • 例 ROUND(数値, 1)






  • AVE: 平均値


    • AVE(fieldcode[,fieldcode...])

    • 例 AVE(数値)

    • 例 AVE(数値, 数値_0, 数値_1)






  • AVEIF: 条件付き平均値


    • AVEIF(condition,fieldcode[,fieldcode...])

    • 例 AVEIF(文字列=="A", 数値)






  • MAX: 最大値


    • MAX(fieldcode[,fieldcode...])

    • 例 MAX(数値)

    • 例 MAX(数値, 数値_0, 数値_1)






  • MAXIF: 条件付き最大値


    • MAXIF(condition,fieldcode[,fieldcode...])

    • 例 MAXIF(文字列=="A", 数値)






  • MIN: 最小値


    • MIN(fieldcode[,fieldcode...])

    • 例 MIN(数値)

    • 例 MIN(数値, 数値_0, 数値_1)






  • MINIF: 条件付き最小値


    • MINIF(condition,fieldcode[,fieldcode...])

    • 例 MINIF(文字列=="A", 数値)






  • NVL: 指定されたパラメータで最初の空文字以外の値


    • NVL(fieldcode[,fieldcode...])

    • 例 NVL(数値, 0)

    • 例 NVL(数値, 数値_0, 0)

    • 例 NVL(文字列, "初期値")






  • SUM: 合計


    • SUM(fieldcode[,fieldcode...])

    • 例 SUM(数値)

    • 例 SUM(数値, 数値_0, 数値_1)



    • 例 SUM(テーブル数値, テーブル数値0, テーブル数値1)






  • SUMIF: 条件付き合計


    • SUMIF(condition,fieldcode[,fieldcode...])

    • 例 SUMIF(文字列=="A", 数値)



    • 例 SUMIF(テーブル文字列=="A", テーブル数値)






  • PRODUCT: かけ算


    • PRODUCT(fieldcode[,fieldcode...])

    • 例 PRODUCT(数値)

    • 例 PRODUCT(数値, 数値_0, 数値_1)



    • 例 PRODUCT(テーブル数値, テーブル数値_0)






  • PRODUCTIF: 条件付きかけ算


    • PRODUCTIF(condition,fieldcode[,fieldcode...])

    • 例 PRODUCTIF(文字列=="A", 数値)



    • 例 PRODUCTIF(テーブル文字列=="A", テーブル数値)






  • CONCAT: 文字連結


    • CONCAT(fieldcode[,fieldcode...])

    • 例 CONCAT(文字列)

    • 例 CONCAT(文字列, 文字列0, 文字列1)



    • 例 CONCAT(テーブル文字列, ",")






  • CONCATIF: 条件付き文字連結


    • CONCATIF(condition,fieldcode[,fieldcode...])

    • 例 CONCATIF(文字列=="A", 文字列_0)



    • 例 CONCATIF(テーブル文字列=="A", テーブル文字列_0 ",")






  • SWITCH: 複数条件で指定値を返す


    • SWITCH(fieldcode, matched value, value, [matched value, value [,...]], default value)

    • 例 SWITCH(文字列,"A", 数値1, "B", 数値2, 数値3)






  • FIRST: 先頭の有効な値


    • FIRST(fieldcode[,fieldcode...])

    • 例 FIRST(文字列)

    • 例 FIRST(数値)






  • FIRSTIF: 条件付き先頭の有効な値


    • FIRSTIF(condition,fieldcode[,fieldcode...])

    • 例 FIRSTIF(文字列=="A", 文字列)

    • 例 FIRSTIF(文字列=="A", 数値)






  • LAST: 最後の有効な値


    • LAST(fieldcode[,fieldcode...])

    • 例 LAST(文字列)

    • 例 LAST(数値)






  • LASTIF: 条件付き最後の有効な値


    • LASTIF(condition,fieldcode[,fieldcode...])

    • 例 LASTIF(文字列=="A", 文字列)

    • 例 LASTIF(文字列=="A", 数値)






  • SUBTABLE: サブテーブル指定行(0-)の値


    • SUBTABLE(fieldcode [, 指定行])

    • 例 SUBTABLE(文字列, 0)

    • 例 SUBTABLE(文字列)






  • ARRAY: 配列


    • ARRAY(fieldcode[,fieldcode[,...]])

    • ARRAY(文字列1,文字列2)




  • ARRAY_COUNT: 配列数


    • ARRAY_COUNT(fieldcode[,fieldcode[,...]])

    • 例 ARRAY_COUNT(文字列1,文字列2)




  • TARRAY: テーブル内項目の配列化


    • TARRAY(fieldcode [,fieldcode [,...]])

    • 例 TARRAY(文字列1,文字列2)




  • TARRAYIF: 条件付きテーブル内項目の配列化


    • TARRAYIF(condition,fieldcode [,fieldcode [,...]])

    • 例 TARRAYIF(文字列=="A",文字列1,文字列2)




  • TDS: テーブル内項目の配列化(配列の重複値を排除)


    • TDS(fieldcode [,fieldcode [,...]])

    • 例 TDS(文字列1,文字列2)




  • TDSIF: 条件付きテーブル内項目の配列化(配列の重複値を排除)


    • TDSIF(condition,fieldcode [,fieldcode [,...]])

    • 例 TDSIF(文字列=="A",文字列1,文字列2)




  • DISTINCT: 配列の重複値を排除


    • DISTINCT(fieldcode[,fieldcode[,...]])

    • 例 DISTINCT(文字列1,文字列2)




日付関数



  • DATE_DIFF: 日付差分関数


    • DATE_DIFF(fieldcode|"TODAY" ,fieldcode|"TODAY" ,type)


      • type : "years", "months", "weeks", "days", "hours", "minutes", "seconds"



    • 例 DATE_DIFF(日付, "TODAY", "years")






  • DATE_FORMAT: 日付関数


    • DATE_FORMAT(fieldcode [,format [,timezone]])

    • DATE_FORMAT("TODAY"[,format [,timezone]])

    • 例 DATE_FORMAT(日付, "YYYY-MM-DD")






  • DATE_ADD: 日付加算


    • DATE_ADD(fieldcode|"TODAY", num, type, format)


      • type : "year", "month", "week", "day", "hour", "minute", "second"



    • 例 DATE_ADD(日付, 1, "month", "YYYY-MM-DD")






  • DATE_STARTOF: 日付関数


    • DATE_STARTOF(fieldcode|"TODAY" , type, format)

    • 例 DATE_STARTOF(日付, "month", "YYYY-MM-DD")






  • DATE_ENDOF: 日付関数


    • DATE_ENDOF(fieldcode|"TODAY" , type, format)

    • 例 DATE_ENDOF(日付, "month", "YYYY-MM-DD")






  • TODAY: 本日日付


    • TODAY()

    • 例 TODAY()

      DATE_FORMAT("TODAY","YYYY-MM-DD") と同等




  • NOW: 現在時刻 ISO形式、日時項目設定用


    • NOW()

    • 例 NOW()

      ⇒ "2019-01-28T17:02:25.527Z"




  • DURATION: 期間関数 (milliseconds に変換します)


    • DURATION(fieldcode [, type])


      • type : "years", "months", "days", "hours", "minutes", "seconds"



    • 例 DURATION(時刻)

    • 例 DURATION(数字, "hours")






  • DURATION_AS: 期間関数 (指定単位に変換します)


    • DURATION_AS(fieldcode, type)


      • type : "years", "months", "days", "hours", "minutes", "seconds"



    • 例 DURATION_AS(時刻, "hours")






  • DURATION_GET: 期間関数 (指定単位の数値を取得します)


    • DURATION_GET(fieldcode, type)


      • type : "years", "months", "days", "hours", "minutes", "seconds"



    • 例 DURATION_GET(時刻, "hours")






  • DURATION_FORMAT: 期間書式変換 (指定書式に変換します)


    • DURATION_FORMAT(fieldcode, format)


      • format: 下記書式の組み合わせを指定


        • "$": 期間がマイナスの場合、"-"を表示

        • "#Y", "#M", "#D", "#H", "#m", "#s": 指定単位に変換TOTAL(小数を含む)

        • "%Y", "%M", "%D", "%H", "%m", "%s": 指定単位に変換TOTAL(小数を含まない)

        • "@Y", "@M", "@D", "@H", "@m", "@s": 指定単位に変換

        • "HH", "MM", "SS": 指定単位を取得(2桁表示)





    • 例 DURATION_FORMAT(時刻, "HH:mm")

    • 例 DURATION_FORMAT(時刻, "%H時間 @m分")






文字列関数



  • FIND: 文字列の検索で、文字位置を返す


    • FIND(fieldcode, string)

    • 例 FIND(文字列, "A")






  • SEARCH: 文字列の検索(正規表現)で、文字位置を返す


    • SEARCH(fieldcode, pattern[, flags])


      • flag: "g", "i", "m", "u", "y"



    • 例 SEARCH(文字列, "A.b", "i")






  • TEST: 文字列の検索で、文字の有無(true, false)を返す


    • TEST(fieldcode, string [, string...])

    • 例 TEST(文字列, "A", "B")






  • TESTRE: 文字列の検索(正規表現)で、文字の有無(true, false)を返す


    • TESTRE(fieldcode, pattern[, pattern])

    • 例 TESTRE(文字列, "A.b", "AAX", "Hello")






  • TEXTJOIN: 文字列の結合


    • TEXTJOIN(delimiter, ignore_empty, fieldcode [, fieldcode...])


      • ignore_empty: 1, 0



    • 例 TEXTJOIN("," , 1, 文字列1, "A.b", 文字列2)






  • REPLACE: 文字列の置換(マッチした先頭のみ置換)


    • REPLACE(fieldcode, pattern, string)

    • 例 REPLACE(文字列, "AB", "XYZ")






  • REPLACEALL: 文字列の置換


    • REPLACEALL(fieldcode, pattern, string)

    • 例 REPLACEALL(文字列, "AB", "XYZ")






  • REPLACERE: 文字列の置換(正規表現)


    • REPLACERE(fieldcode, pattern[, flags], string)


      • flag: "g", "i", "m", "u", "y"



    • 例 REPLACERE(文字列, "A.b", "i", "XYZ")






  • SPLIT: 区切り文字で配列に変換


    • SPLIT(fieldcode, delimiter [, flags])


      • flag: 0: 空文字要素を削除しない 1: 空文字要素を削除



    • 例 SPLIT(文字列, ",")



    • 例 SPLIT(文字列, ",", 1)






  • JOIN: 配列を区切り文字で文字列に変換


    • JOIN(fieldcode, delimiter [, flags])


      • flag: 0: 空文字要素を削除しない 1: 空文字要素を削除



    • 例 JOIN(文字列, ",")



    • 例 JOIN(文字列, ",", 1)






  • UPPER: 大文字に変換


    • UPPER(fieldcode)

    • 例 UPPER(文字列)






  • LOWER: 小文字に変換


    • LOWER(fieldcode)

    • 例 LOWER(文字列)






  • LEFT: 文字列の左


    • LEFT(fieldcode, length)

    • 例 LEFT(文字列, 3)






  • MID: 文字列の指定位置から


    • MID(fieldcode, start, length)

    • 例 MID(文字列, 2, 3)






  • RIGTH: 文字列の右


    • RIGHT(fieldcode, length)

    • 例 RIGHT(文字列, 3)






  • SLICE: 文字列の切り出し(0 から開始)


    • SLICE(fieldcode, start, end)

    • 例 SLICE(文字列, 2, 3)






  • SUBSTR: 文字列の切り出し(0 から開始)


    • SUBSTR(fieldcode, start, length)

    • 例 SUBSTR(文字列, 2, 3)






  • SUBSTRING: 文字列の切り出し(0 から開始)


    • SUBSTRING(fieldcode, start, end)

    • 例 SUBSTRING(文字列, 2, 3)






  • LENGTH: 文字列の長さ


    • LENGTH(fieldcode)

    • 例 LENGTH(文字列)






  • NEWLINE: 改行文字を返す


    • NEWLINE()

    • 例 "AA"&NEWLINE()&"BB"




論理関数



  • BOOL: 論理値変換


    • BOOL(fieldcode)

    • 例 BOOL(文字列)






  • NOT: 否定


    • NOT(fieldcode)

    • 例 NOT(文字列)






  • AND: 論理積


    • AND(condition[,condition...])

    • 例 AND(文字列=="A", 文字列1=="B", 文字列2=="C")






  • OR: 論理和


    • OR(condition[,condition...])

    • 例 OR(文字列=="A", 文字列1=="B", 文字列2=="C")






  • XOR: 排他的論理和


    • XOR(condition[,condition...])

    • 例 XOR(文字列=="A", 文字列1=="B", 文字列2=="C")






ユーザー選択、組織選択、グループ選択情報



  • SEL_CODE: コード情報


    • SEL_CODE(fieldcode [, "code"|"array"|"text" [, delimiter]])

    • 例 SEL_CODE(ユーザー選択)

    • 例 SEL_CODE(ユーザー選択, "array")

    • 例 SEL_CODE(ユーザー選択, "text", ", ")

    • 例 SEL_CODE(組織選択)

    • 例 SEL_CODE(グループ選択)

    • 例 SEL_CODE(作成者)

    • 例 SEL_CODE(更新者)




  • SEL_NAME: NAME情報


    • SEL_NAME(fieldcode [, "code"|"array"|"text" [, delimiter]])

    • 例 SEL_NAME(ユーザー選択)

    • 例 SEL_NAME(ユーザー選択, "array")

    • 例 SEL_NAME(ユーザー選択, "text", ", ")

    • 例 SEL_NAME(組織選択)

    • 例 SEL_NAME(グループ選択)

    • 例 SEL_NAME(作成者)

    • 例 SEL_NAME(更新者)




ログイン情報



  • LOGIN_NAME: ログイン名


    • LOGIN_NAME()

    • 例 LOGIN_NAME()






  • LOGIN_NAME: ログインコード


    • LOGIN_CODE()

    • 例 LOGIN_CODE()






  • LOGIN_EMAIL: ログインメールアドレス


    • LOGIN_EMAIL()

    • 例 LOGIN_EMAIL()






計算式の書き方


フィールドコードの設定

計算式では、 フィールドコードを使いますので、初期設定のままでは大変分かりにくくなってしまいます。

始めに、フィールドコードをラベルにあわせて設定しましょう。

なお、フィールドコードには使用できない文字がありますので、適時変更します。


  • 既定のフィールドコード: 数値 * 数値_0

  • ラベルに合わせた変更後: 単価 * 数量

kintone フィールドコード設定プラグインを使うとまとめて、フィールドコードをラベルに合わせることができます。 


数値計算


  • 金額の計算式: 単価 * 数量

  • 消費税(端数を切り下げの例): FLOOR(単価 * 数量 * 0.8)

  • サブテーブルの計算:SUM(金額)

  • サブテーブルの条件付き合計: SUMIF(IN(ドロップダウン_0, "電車(片道)", "電車(往復)"), 数値)

  • サブテーブルの条件付き平均: AVEIF(IN(ドロップダウン_0, "電車(片道)", "電車(往復)"), 数値)

2017-06-13_08h55_19.png


足し算と SUM の違い

足し算 A+B と合計 SUM(A,B) では、未入力時の計算結果が異なります。

計算式内に未入力項目があると、


  • 足し算 A+B : 空文字

  • SUM(A,B) : 未入力を除いた合計

2018-06-23_13h31_58.png

2018-06-23_13h31_24.png


レコード番号

フィールドコードと \$id を指定できます。

\$id は、フォーム上にレコード番号を配置しなくても使用できます。


  • IDによる連番: "A" & RIGHT(10000000 + \$id, 5)

  • IDによる連番2: IF(\$id, "A" & RIGHT(10000000 + \$id, 5), "(自動設定)")


プラグインの追加


  • 「kintone システム管理 > プラグイン」で追加します。

  • 「アプリの設定 > プラグイン」で、アプリに追加します。

2017-06-07_18h33_39.png


プラグインの設定


  • 対象アプリで計算式を使用する項目を選択して、計算式を設定します。

  • フィルタ機能で、表示項目を絞れます。

  • グリッドのラベル欄をクリックすると、その項目順にソートされます。

  • 「保存する」をクリックします。

※フォーム変更時は、本番環境にフォーム変更を反映後に、本プラグイン設定を行ってください。

2019-02-24_15h07_07.png

※ 計算式に「改行」を指定して、式を見やすく出来ます。

「改行」は、実行時には無視されます。


循環参照の許可

計算式に自項目を含め、循環参照を指定可能にします。

計算処理が無限ループにならないように、計算式を指定する必要があります。


編集

編集を選択した項目は、一覧画面編集・追加編集画面で編集可能になります。


非表示

非表示を選択した項目は、一覧画面・詳細画面・追加編集画面で非表示になります。


ランク

計算式の実行順序をランクで指定できます。

ランクが大きい項目が実行順序が早く、未設定はランク 0 と同じです。


  • ランク指定値:10000 ~ -10000 の範囲


運用環境に反映

「運用環境に反映」を選択すると、「保存」クリック時に、直接運用環境に反映されます。


フィルタ機能


  • フィルタ入力欄に、キーワードを入力すると、該当する項目のみ表示されます。

  • キーワードは、黄色表示となります。

  • またドロップダウンで、抽出条件と対象欄を選択できます。

  • リセットボタンで、フィルタをリセットします。

  • フィルタ後に再表示されても、表示順は戻りません。必要に応じソート機能を使います。

2017-09-18_22h23_50.png


ソート機能


  • グリッドのヘッダ部をクリックすると、ソートされます。

  • もう一度クリックすると、逆順に表示されます。

2017-09-18_22h33_50.png


関数入力支援

編集エリア内で「?」を入力すると、指定可能な関数一覧が表示されます。

関数をクリックすると編集エリアに関数名が入力されます。

2017-09-18_19h43_34.png


フィールドコード入力支援

編集エリア内で「:」(コロン)を入力すると、項目一覧(項目名:フィールドコード)が表示されます。

項目をクリックすると編集エリアにフィールドコードが入力されます。

2017-09-18_19h41_02.png


言語ごとの名称設定時の条件式について

項目の値に、言語ごとの名称を設定した場合、条件式には各言語に対応する条件を指定します。


  • ドロップダウン、ラジオボタン、チェックボックス、複数選択、ステータス

チェックボックスの言語ごとの名称設定例

 英語、日本語、中国語にそれぞれ名称を設定している

2017-08-26_14h13_52.png

ユーザの設定言語により、表示される値が異なりますので、条件式も対応します。

sample1 が選択された場合の条件式は、下記のようにします。

IN(チェックボックス, "sample1", "サンプル1", "样品1")


エラーチェック

計算式に、定数、演算子、関数名、フィールドコード以外を指定するとエラー表示します。

2017-09-18_19h44_36.png


循環参照エラーについて

計算式において、項目間で互いに参照する設定は、行わないでください。

「循環参照を許可」を非選択であれば、

単純な2項目間の循環参照は、「保存」時のチェックでエラーになりますが、

複数項目を経由して、循環参照を設定すると、レコード変更時に無限ループになります。

ただし、編集時に1画面で100,000 回以上プラグインの解析処理が行われると、エラーとして処理を中断します。

2017-06-07_22h12_27.png

2017-06-07_22h16_17.png


一括計算機能

一覧画面で、対象レコードの一括計算が出来ます。


一括計算機能のプラグイン設定

一括計算を行うには、ボタン設定と一覧別設定を指定します。

2019-02-09_17h53_51.png


ボタン設定

編集画面・一覧画面で表示するボタンについて設定します。


  • チェック: 選択状態でボタンを表示

  • デフォルト: ボタン表示名

  • 英語: 英語表記

  • 日本語: 日本語表記

  • 中国語: 中国語表記

2019-02-09_18h06_18.png


一覧別設定

「一括計算ボタン」を表示する一覧画面を設定します。


  • すべての一覧で有効: チェックするとすべての一覧画面でボタンを表示

  • チェック: 選択した一覧でボタンを表示

2019-02-09_18h06_48.png


一括計算の実行


  • 「一括計算」ボタンをクリック

2019-02-09_18h12_09.png


  • 「更新」ボタンをクリック

2019-02-09_18h15_04.png


  • 更新結果の表示

更新レコード数(更新数/変更数/計算対象)

2019-02-09_18h16_03.png


既存レコードの更新

計算式を変更後に、既存レコードの更新が出来ます。

対象は、対象アプリの全レコードです。


  • 「既存レコードを更新」ボタンをクリックします。

  • 対象レコード数が表示されます。

  • 「レコード更新」ボタンをクリックすると更新処理が開始されます。

※フォーム変更を本番環境に反映後に、既存レコード変更を行ってください。
変更前にデータのバックアップを取得してください。

2017-06-07_18h36_41.png


計算式ツール

計算式を作成するためのツール機能です。

レコード詳細画面、レコード追加・編集画面で利用できます。

複雑な計算式の作成や動作確認を行えます。


計算式ツールの有効化

プラグイン設定画面で「ツール」オプションを選択して、「保存」します。

2019-01-30_15h50_08.png


計算式ツールの表示

「計算式ツールの表示」アイコンをクリックすると、計算式ツールが表示されます。

2019-01-30_16h02_30.png


計算式の入力と実行


  • 通常の計算式


    • 計算式を入力し、テーブルを未選択

    • 計算ボタンをクリックすると、表示中レコードの値を使って計算

    • 検査ボタンをクリックすると、計算式のチェック

      レコードの値にかかわらず、計算式全体をチェック



2019-01-30_16h06_47.png


  • テーブル行単位の計算式


    • 計算式を入力し、テーブルを選択

    • 計算ボタンをクリックすると、表示中レコードのテーブル値を使って計算

      指定した行数分を計算する

    • 検査ボタンをクリックすると、計算式のチェック

      レコードの値にかかわらず、計算式全体をチェック



2019-01-30_16h16_55.png


フィールドコードの入力支援

計算式入力エリアで、「:」を入力すると項目一覧が表示されます。

2019-01-30_16h28_22.png


関数の入力支援

計算式入力エリアで、「?」を入力すると項目一覧が表示されます。

2019-01-30_16h28_52.png


項目に設定された計算式の入力支援

計算式入力エリアで、「@」を入力すると計算式が設定された項目一覧が表示されます。

項目を選択すると、設定済みの計算式が展開されます。

2019-01-30_16h29_08.png


レコードの移動

レコード詳細画面で計算式ツール表示中に、kintone のショートカットでレコードを移動できます。

計算式ツールの入力エリア外にフォーカスを当てて、「j」または「k」を押下します。

同じ計算式を別のレコードで動作確認が出来ます。


  • j : 次のレコードを選択する

  • k : 前のレコードを選択する

2019-01-30_16h24_18.png


プラグイン設定のダウンロード


  • プラグイン設定をダウンロードできます。

  • 計算式を変更している場合は、変更後の設定が対象です。

  • ブラウザ IE については、プラグイン設定のダウンロードの動作対象外です。

2017-09-18_19h47_55.png


プラグイン設定のアップロード


  • プラグイン設定をアップロードできます。

  • フィールドコードをキーにして、設定ファイルから計算式を設定します。

  • ブラウザ IE については、プラグイン設定のアップロードの動作対象外です。

2017-09-18_19h52_01.png


  • プラグイン設定ファイル情報を確認して、設定します。

2017-09-18_19h54_07.png


注意事項


  • 既に、JavaScript によるカスタマイズを行っているアプリの場合、処理が競合して、エラーになる場合があります。その場合は、該当するアプリでプラグインの使用を中止してください。


計算式の計算結果を参照する場合の注意事項

計算式プラグインは Excel のように無限に計算結果を他のセルで使用できるようにはなっていません。

※ 項目の値変更イベントで、最終的に正しい結果になる場合もあります。

OK 税抜金額:単価 * 数量

OK 消費税:FLOOR(税抜金額 * 0.08)

NG 税込金額:税抜金額 + 消費税

計算式プラグインでは、下記のようなしくみで計算しています。


  1. テーブル以外の項目について、(ランク順・レイアウトの上から下・左から右)の計算式を計算

  2. テーブル内の項目について、(ランク順・レイアウトの上から下・左から右)の計算式を順番に計算

  3. テーブル以外の項目について、(ランク順・レイアウトの上から下・左から右)の計算式を計算

計算結果を使用する場合、1段階であれば 3. の計算で対応できますが、

2段階で計算結果を使用する場合は、保証できません。

ランクを指定しない場合、たまたま計算する順番が計算結果を使う順番であれば計算されます。

対応策としては、下記があります。

・ランクを指定して、計算順序を指定

・項目の計算結果を使うのではなく、それも計算式に置き換え

OK 税抜金額:単価 * 数量

OK 消費税:FLOOR(税抜金額 * 0.08)

OK 税込金額:税抜金額 + FLOOR(税抜金額 * 0.08)


計算式設定例


値変換

項目の値により、別の項目に値を設定します。


  • 数値変換:ラジオボタン項目の値により、対応する数値に変換


    • SWITCH(ラジオボタン,"A",10,"B",20,"C",30,0)



  • 文字変換:ドロップダウン項目の値により、対応する文字列に変換


    • SWITCH(ドロップダウン,"A","札幌","B","仙台","C","大阪","東京")



  • ランク変換:数値により、対応するランク(ドロップダウン項目)に変換


    • IFS(数値A>=80,"A",数値A>=50,"B","C")



2018-06-23_14h02_41.png

2018-06-23_14h01_13.png


文字列変換

文字列Aの"-"を指定した文字列""に変換


  • 最初にマッチングした文字列のみ変換


    • REPLACE(文字列A,"-","")



  • マッチングしたすべての文字列を変換


    • REPLACERE(文字列A,"-","g","")



2019-01-10_19h37_51.png

2019-01-10_19h38_40.png


消費税計算

テーブル内の金額を合計して、消費税計算を行います。

テーブル内金額の合計は、計算項目でも出来ますが、計算項目だと値が変化しても計算式プラグインで認識できません。そのためテーブル内金額の合計も計算式プラグインで行います。


  • 金額合計(税抜き)


    • SUM(税抜き金額)



  • 消費税:小数点以下を切り捨て


    • FLOOR(金額合計_税抜き*0.08)



  • 金額合計(税込み)


    • FLOOR(金額合計_税抜き*1.08)



  • 税抜金額


    • 税抜き価格*数量



2018-06-23_12h52_01.png

2018-06-23_12h53_08.png


テーブル内項目の特定値をカウント

テーブル内科目の"切符代"をカウントする例です。


  • テーブル内の条件付きカウント

    COUNTIF 関数で、条件付きカウントを行います。


    • COUNTIF(科目=="切符代", 1)




テーブルの金額を科目別に集計

テーブル内の金額項目を同じ行内の科目別に集計して、合計項目に設定する例です。


  • テーブル内の条件付き集計

    SUMIF 関数で、条件付き集計を行います。


    • SUMIF(科目=="切符代", 金額)



2017-10-04_21h15_35.png

2017-10-04_22h11_14.png


テーブル行の値を取得

顧客対応履歴などで、最新対応内容を取得する場合の計算式設定例です。

テーブル内の最終行または、テーブル内の最大日付の行を判定して取得します。



  • テーブルの最終行

    LASTIF 関数で、値の入っている最終行を取得します。


    • DATE_FORMAT(LASTIF(対応日付, 対応日付), "YYYY-MM-DD")

    • LASTIF(対応日付, 対応内容)




  • テーブルの最大値

    テーブル内の最大日付を取得して、その値の行にある項目をLASTIF 関数で取得します。


    • DATE_FORMAT(MAX(対応日付), "YYYY-MM-DD")

    • LASTIF(対応日付==MAX日付, 対応内容)



2017-10-10_10h48_46.png

2017-10-10_10h47_53.png


時間集計の設定

勤務時間を集計する設定例です。



  • テーブル内の時刻項目を計算して、勤務時間を集計します。


    • 県内実務時間

      DURATION_FORMAT(

      SUMIF(AND(区分=="県内",終了,開始,休憩),

      DURATION(終了)-DURATION(開始)-DURATION(休憩,"minutes")),

      "$%H時間 @m分")






  • テーブル内の時刻項目から勤務時間を計算します。


    • 勤務時間

      IF(AND(終了,開始,休憩),

      DURATION_FORMAT(

      DURATION(終了)-DURATION(開始)-DURATION(休憩,"minutes"),

      "$%H時間 @m分"))



2017-10-29_20h01_17.png

2017-10-29_20h11_10.png


日付計算

2019-01-24_19h53_07.png


  • 前月末

    IF(日付,DATE_ENDOF(DATE_ADD(日付,-1,"month","YYYY-MM-DD"),"month","YYYY-MM-DD"))

  • 当月初

    IF(日付,DATE_STARTOF(日付,"month","YYYY-MM-DD"))

  • 当月末

    IF(日付,DATE_ENDOF(日付,"month","YYYY-MM-DD"))

  • 翌月初

    IF(日付,DATE_ADD(日付,1,"month","YYYY-MM-01"))

  • 翌月末

    IF(日付,DATE_ENDOF(DATE_ADD(日付,1,"month","YYYY-MM-DD"),"month","YYYY-MM-DD"))

2019-02-19_01h24_23.png


  • 年初

    IF(日付,DATE_STARTOF(日付,"year","YYYY-MM-DD"))

  • 年末

    IF(日付,DATE_ENDOF(日付,"year","YYYY-MM-DD"))

  • 年度初日

    IF(日付,

    IF(DATE_FORMAT(日付,"MM")>="04",

    DATE_FORMAT(日付,"YYYY-04-01"),

    DATE_ADD(日付,1,"year","YYYY-04-01")))

  • 年度末

    IF(日付,

    IF(DATE_FORMAT(日付,"MM")>="04",

    DATE_ENDOF(DATE_ADD(日付,1,"year","YYYY-03-01"),"month","YYYY-MM-DD"),

    DATE_ENDOF(DATE_FORMAT(日付,"YYYY-03-01"),"month","YYYY-MM-DD")))


日時項目の設定



  • 更新時に、2時間後の日時を日時項目に設定する例です。


    • DATE_ADD("TODAY",2, "hour", "YYYY-MM-DDTHH:mmZ")





  • 日付項目と時刻項目を合わせて日時項目に設定する例です。


    • IF(AND(日付, 時刻),

      DATE_FORMAT(

      DATE_FORMAT(日付,"YYYY-MM-DD") & " " & 時刻,

      "YYYY-MM-DDTHH:mmZ"))





正規表現による置換


  • 数値の数字をスペースで区切る変換例です。

    正規表現を使った置換で、数値の前にスペースを追加して、

    SLICEで余計な先頭のスペースを外しています。


    • SLICE(REPLACERE(数値,"[0-9]","g"," $&"),1,100)

      ※数値: 数値項目のフィールドコード