17
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

rex0220 計算式プラグイン

Last updated at Posted at 2017-06-07

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

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

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

  • レコード番号 & "-" & DATE_FORMAT(日付1, "YYYY-MM-DD")
  • SWITCH(ドロップダウン,"経理部","経理部TEST","総務部","総務部","営業部","営業部test","その他")
  • SUMIF(ドロップダウン_0==="電車(片道)", 数値) + SUMIF(ドロップダウン_0==="電車(往復)", 数値)

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

rex0220 storesで、販売中です。

直近の変更点

Ver.84
・DIC_MAP 関数を追加
 DIC_MAP(DIC("A",1,"B",2),key,val,key&":"&val) -> ["A:1","B:2"]
 DIC_MAP(DIC("A",1,"B",2),key,val,val) -> [1,2]
 DIC_MAP(DIC("A",1,"B",2),key,val,idx,key&":"&(val+idx)) -> ["A:1","B:3"]
・プラグイン設定画面初期処理でエラー発生時に、ダイアログ表示するように変更

Ver.83
・UINFO, OINFO, GINFO 関数に、"setData" オプション(項目セット用)を追加
UINFO("code1","setData") -> [{"code":"code1","name":"name1"}]
OINFO("code1","setData") -> [{"code":"code1","name":"name1"}]
GINFO("code1","setData") -> [{"code":"code1","name":"name1"}]

計算式応用例

計算式プラグインと他プラグイン連携例

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

2019-02-24_15h07_07.png

編集画面例

2017-06-07_17h45_34.png

スマホ画面例

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

2017-06-08_21h33_55.png

機能紹介

  • 文字連結

    • レコード番号、ステータスを文字項目に連結
    • 他項目の値で、設定する文字列を切替え
  • 計算

    • サブテーブルの数値を条件付きで合計
    • サブテーブルに未入力行があっても合計
    • チェックボックス、ユーザー選択等に計算値を設定
  • サブテーブル設定

    • サブテーブルの行数を指定
    • レコード追加時のテーブルの初期設定
    • サブテーブルのCSV文字列化
    • CSV文字列からサブテーブル設定
  • ボタン表示

    • ヘッダー部、スペースエリアにボタンを表示
    • ボタンクリックで、ダイアログ表示
    • ボタンクリックで、項目に計算値を設定

定数

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

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

演算子

  • 文字連結: &
  • 算術: +,-,*,/,%,**,^
  • 比較: =,==,===,!==,>,<,>=,<=,!=,<>
  • 論理: &&,||

関数

関数は、下記のように「(」を空白を入れずに、記述します。
空白があると、fieldcode として扱われます。

 関数名(パラメータ)

OK: CEIL(数値, 1)
NG: CEIL (数値, 1)

関数一覧

  • ARRAY: 配列

    • ARRAY(fieldcode[,fieldcode[,...]])
    • ARRAY(文字列1,文字列2)
  • ARRAY_COUNT: 配列数

    • ARRAY_COUNT(fieldcode[,fieldcode[,...]])
    • 例 ARRAY_COUNT(文字列1,文字列2)
  • ARRAY_DEL: 配列要素を削除

    • ARRAY_DEL(fieldcode[,fieldcode[,...]])
    • 例 ARRAY_DEL(チェックボックス,文字列2)
    • 例 ARRAY_DEL(チェックボックス1,文字列1,チェックボックス2)
  • ARRAY_EQUALS: 2つの配列のすべての要素が等しいか判定

    • ARRAY_EQUALS(配列,配列)
    • 例 ARRAY_EQUALS(ARRAY(1,2,3),ARRAY(1,2,3)) -> true
    • 例 ARRAY_EQUALS(ARRAY(1,2,3),ARRAY(1,2,3,4)) -> false
  • ARRAY_EVERY: 配列のすべての要素が特定の条件を満たしているか判定

    • ARRAY_EVERY(項目,変数名[,インデックス],要素式)
    • 例 ARRAY_EVERY(ARRAY(1,2,3),XX,XX>1) -> false
    • 例 ARRAY_EVERY(ARRAY(1,2,3),XX,XX>0) -> true
  • ARRAY_FIL: 配列の要素を式でフィルタリング

    • ARRAY_FIL(項目,変数名[,インデックス],要素式)
    • 例 ARRAY_FIL(ARRAY(1,2,3),XX,XX>1) -> [2,3]
    • 例 ARRAY_FIL(ARRAY(1,2,3),XX,XX!=2) -> [1,3]
    • 例 ARRAY_FIL(ARRAY("A","B","C"),XX,XX!="A") -> ["B","C"]
    • 例 ARRAY_FIL(ARRAY(1,2,3),XX,idx,idx>1) -> [3]
    • 使用例:rex0220 計算式プラグイン ARRAY_MAP 関数
  • ARRAY_FOR: 指定した要素数の配列に変換※最大数 1000

    • ARRAY_FOR(項目[,インデックス],要素式)
    • 例 ARRAY_FOR(3,idx,idx) -> [0,1,2]
    • 例 ARRAY_FOR(3,idx,idx*3) -> [0,3,6]
    • 例 ARRAY_FOR(3,"A") -> ["A","A","A"]
    • 例 ARRAY_FOR(3,idx,"A"&idx) -> ["A1","A2","A3"]
  • ARRAY_GET: 配列の指定位置(0-,"first","last")の1要素を取得

    • ARRAY_GET(fieldcode,指定位置)
    • 例 ARRAY_GET(チェックボックス1,0)
    • 例 ARRAY_GET(チェックボックス1,"first")
    • 例 ARRAY_GET(チェックボックス1,"last")
  • ARRAY_MAP: 配列の要素を式で変換

    • ARRAY_MAP(項目,変数名[,インデックス],要素式)
    • 例 ARRAY_MAP(ARRAY(1,2,3),XX,XX*3) -> [3,6,9]
    • 例 ARRAY_MAP(ARRAY(1,2,3),XX,"A"&XX) -> ["A1","A2","A3"]
    • 例 ARRAY_MAP(ARRAY("A","B","C"),XX,"A"&XX) -> ["AA","AB","AC"]
    • 例 ARRAY_MAP(ARRAY(1,2,3),XX,idx,XX+idx) -> [1,3,5]
    • 使用例:rex0220 計算式プラグイン ARRAY_MAP 関数
  • ARRAY_SOME: 配列内の少なくとも1つの要素が指定された条件を満たしているか判定

    • ARRAY_SOME(項目,変数名[,インデックス],要素式)
    • 例 ARRAY_SOME(ARRAY(1,2,3),XX,XX>1) -> true
    • 例 ARRAY_SOME(ARRAY(1,2,3),XX,XX>0) -> true
    • 例 ARRAY_SOME(ARRAY("A","B","C"),XX,XX="X") -> false
  • ARRAY_SORT: 配列のソート

    • ARRAY_SORT(fieldcode [,ソート順])
      • ソート順: 1:昇順、0:降順
    • 例 ARRAY_SORT(チェックボックス1)
    • 例 ARRAY_SORT(チェックボックス1,0)
  • AVE: 平均値

    • AVE(fieldcode[,fieldcode...])
    • 例 AVE(数値)
    • 例 AVE(数値, 数値_0, 数値_1)

  • AVEIF: 条件付き平均値

    • AVEIF(condition,fieldcode[,fieldcode...])
    • 例 AVEIF(文字列=="A", 数値)

  • CEIL: 切り上げ(ROUNDUP関数と機能は同じ)

    • CEIL(fieldcode) 小数点以下を切り上げ
    • CEIL(fieldcode, 小数点位置)
    • 例 CEIL(数値, 1)

  • CHOOSE: 指定した数値位置(0から始まる)の値を返す

    • CHOOSE(fieldcode, value0 [,value1 [, value2 [,...]]])
    • 例 CHOOSE(数値, 100, 200, 300)
      • CHOOSE(0, 100, 200, 300) -> 100
      • CHOOSE(1, 100, 200, 300) -> 200
      • CHOOSE(3, 100, 200, 300) -> ""
    • 例 CHOOSE(数値, "ABC", "DEF", "XYZ")
      • CHOOSE(2, "ABC", "DEF", "XYZ") -> "XYZ"
  • CONCAT: 文字連結

    • CONCAT(fieldcode[,fieldcode...])
    • 例 CONCAT(文字列)
    • 例 CONCAT(文字列, 文字列_0, 文字列_1)

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

  • CONCATIF: 条件付き文字連結

    • CONCATIF(condition,fieldcode[,fieldcode...])
    • 例 CONCATIF(文字列=="A", 文字列_0)

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

  • COUNT: 数値カウント

    • COUNT(fieldcode[,fieldcode...])
    • 例 COUNT(数値)

  • COUNTA: 空白以外カウント

    • COUNTA(fieldcode[,fieldcode...])
    • 例 COUNTA(文字列)

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

    • COUNTIF(condition,fieldcode[,fieldcode...])
    • 例 COUNTIF(文字列=="A", 数値)

  • CONTAINS: テーブル内項目の値を確認する

    • CONTAINS(fieldcode,,fieldcode[,fieldcode...])
    • 例 CONTAINS(文字列T, "ABC")
    • 例 CONTAINS(チェックボックスT,"ABC","XYZ")
    • 例 CONTAINS("A","","A") -> true
  • COUNTROW: サブテーブルの行数

    • COUNTROW(fieldcode)
    • 例 COUNTROW(Table)

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

    • DISTINCT(fieldcode[,fieldcode[,...]])
    • 例 DISTINCT(文字列1,文字列2)
    • 例 DISTINCT(チェックボックス1,チェックボックス2)
  • FIRST: 先頭の有効な値

    • FIRST(fieldcode[,fieldcode...])
    • 例 FIRST(文字列)
    • 例 FIRST(数値)

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

    • FIRSTIF(condition,fieldcode[,fieldcode...])
    • 例 FIRSTIF(文字列=="A", 文字列)
    • 例 FIRSTIF(文字列=="A", 数値)

  • FIXED: 数値を桁区切りの文字列に変換

    • FIXED(fieldcode [,小数点以下桁数 [,桁区切り]])
      • 小数点以下桁数(式): 四捨五入なし(規定値)、数値: 指定位置で四捨五入
      • 桁区切り(式): 1:桁区切り(規定値)、0: 桁区切りなし
    • 例 FIXED(数値)
      • FIXED(1000): -> "1,000"
      • FIXED(1234.567): -> "1,234.567"
    • 例 FIXED(数値,1)
      • FIXED(1234.567,1): -> "1,234.6"
    • 例 FIXED(数値,-2)
      • FIXED(1234.567,-2): -> "1,200"
    • 例 FIXED(数値,1,0)
      • FIXED(1234.567,1,0): -> "1234.6"
  • FLOOR: 切り下げ(ROUNDDOWN関数と機能は同じ)

    • 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: 値の存在チェック

    • IN(fieldcode,string[,string...])
    • 例 IN(文字列, "ABC","DEF","GHI")
    • 例 NOT(IN(文字列, "AB","CD"))
    • 例 IN(SEL_CODE(ユーザー選択,"array"),"user1")
    • 例 IN("A","","A") -> true
    • 例 IN("A","","B") -> false
    • 例 IN("","","B") -> true
  • INDEXOF: 配列要素の位置を返す。存在しない場合は -1

    • INDEXOF(配列,値)
    • 例 INDEXOF(ARRAY("A","B","C"),"A") -> 0
    • 例 INDEXOF(ARRAY("A","B","C"),"D") -> -1
  • INT: 整数

    • INT(fieldcode)
    • 例 INT(数値/2)

  • INTERSECT: 配列の積集合(両方の配列に存在する値を配列で返す)

    • INTERSECT(fieldcode,fieldcode)
    • 例 INTERSECT(チェックボックス1,チェックボックス2)
  • ISBLANK: 指定されたパラメータがブランクか判定

    • ISBLANK(fieldcode[,fieldcode...])
    • 例 ISBLANK(文字列)
    • 例 ISBLANK(数値)
    • 例 ISBLANK(数値1,数値2)
    • 例 ISBLANK("","","") -> true
  • ISNUMBER: 指定した値が数値か判定

    • ISNUMBER(fieldcode[,fieldcode...])
    • 例 ISNUMBER(数値)
      • ISNUMBER(100) -> true
      • ISNUMBER("100A") -> false
      • ISNUMBER("") -> false
  • LAST: 最後の有効な値

    • LAST(fieldcode[,fieldcode...])
    • 例 LAST(文字列)
    • 例 LAST(数値)

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

    • LASTIF(condition,fieldcode[,fieldcode...])
    • 例 LASTIF(文字列=="A", 文字列)
    • 例 LASTIF(文字列=="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", 数値)

  • MOD: 剰余

    • MOD(fieldcode,fieldcode)
    • 例 MOD(数値1, 3)
    • 例 MOD(10, 3) -> 1
  • MROUND: 倍数に丸める

    • MROUND(fieldcode, multiple)
    • 例 MROUND(10, 3) -> 9
    • 例 MROUND(-10, -3) -> -9
  • NVL: 指定されたパラメータで最初の空文字以外の値

    • NVL(fieldcode[,fieldcode...])
    • 例 NVL(数値, 0)
    • 例 NVL(数値, 数値_0, 0)
    • 例 NVL(文字列, "初期値")

  • PRODUCT: かけ算

    • PRODUCT(fieldcode[,fieldcode...])
    • 例 PRODUCT(数値)
    • 例 PRODUCT(数値, 数値_0, 数値_1)

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

  • PRODUCTIF: 条件付きかけ算

    • PRODUCTIF(condition,fieldcode[,fieldcode...])
    • 例 PRODUCTIF(文字列=="A", 数値)

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

  • RAND: 0以上、1未満の範囲で少数の乱数を返す

    • RAND()
    • 例 RAND()
  • RANDBETWEEN: 指定した範囲で整数の乱数を返す

    • RANDBETWEEN(最小値,最大値[,配列数])
    • 例 RANDBETWEEN(1, 10)
    • 例 RANDBETWEEN(1,10,10) -> [6,9,6,3,5,3,3,10,9,5]
  • REVERSE: 配列の反転、文字列の反転

    • REVERSE(fieldcode)
    • 例 REVERSE(チェックボックス)
    • 例 REVERSE(ARRAY("AB","CD","EF")) // -> ARRAY("EF","CD","AB")
    • 例 REVERSE(文字列)
    • 例 REVERSE("ABCDEF") // -> "FEDCBA"
  • ROUND: 四捨五入

    • ROUND(fieldcode) 小数点以下を四捨五入
    • ROUND(fieldcode, 小数点位置)
    • 例 ROUND(数値, 1)

  • ROUNDDOWN: 切り下げ(FLOOR関数と機能は同じ)

    • ROUNDDOWN(fieldcode) 小数点以下を切り上げ
    • ROUNDDOWN(fieldcode, 小数点位置)
    • 例 ROUNDDOWN(数値, 1)

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

    • ROWNO(fieldcode)
    • 例 ROWNO(Table)

  • ROUNDUP: 切り上げ(CEIL関数と機能は同じ)

    • ROUNDUP(fieldcode) 小数点以下を切り上げ
    • ROUNDUP(fieldcode, 小数点位置)
    • 例 ROUNDUP(数値, 1)

  • SHUFFLE: 配列をランダムに並び変え

    • SHUFFLE(配列)
    • 例 SHUFFLE(ARRAY("A","B","C","D","E"))
  • SUBTABLE: サブテーブル指定行(0-)の値

    • SUBTABLE(fieldcode [, 指定行])
    • 例 SUBTABLE(文字列, 0)
    • 例 SUBTABLE(文字列)

  • SQRT: 平方根

    • SQRT(fieldcode)
    • 例 SQRT(数値)
  • SUM: 合計

    • SUM(fieldcode[,fieldcode...])
    • 例 SUM(数値)
    • 例 SUM(数値, 数値_0, 数値_1)
    • 例 SUM(テーブル数値, テーブル数値_0, テーブル数値_1)
    • 例 SUM(ARRAY(1,2,3),4,5)
  • SUMIF: 条件付き合計

    • SUMIF(condition,fieldcode[,fieldcode...])
    • 例 SUMIF(文字列=="A", 数値)
    • 例 SUMIF(テーブル文字列=="A", テーブル数値)
  • SWITCH: 複数条件で指定値を返す

    • SWITCH(fieldcode, matched value, value, [matched value, value [,...]], default value)
    • 例 SWITCH(文字列,"A", 数値1, "B", 数値2, 数値3)

  • 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)
  • TDUPCK: テーブル重複値チェック テーブル内項目を指定して重複値がある場合、true を返す

    • TDUPCK(fieldcode[,flag])
      • flag: 空文字を除外 0:除外しない 1:除外する
    • 例 TDUPCK(文字列)
      • TDUPCK(文字列) -> true 重複値がある場合, false 重複値が無い場合
    • 例 TDUPCK(文字列,1) ※空文字を除外
      • TDUPCK(文字列,1) -> false ※(文字列が"A","","")
  • TR_AVE: 同一行のテーブル内項目で平均値

    • TR_AVE(fieldcode[,fieldcode...])
    • 例 TR_AVE(数値T1,数値T2,数値T3)
    • 例 TR_AVE(1,2,3) -> 2
  • TR_COUNT: 同一行のテーブル内項目で数値をカウント

    • TR_COUNT(fieldcode[,fieldcode...])
    • 例 TR_COUNT(数値T1,数値T2,数値T3)
    • 例 TR_COUNT(1,2,"A",,3) -> 3
  • TR_COUNTA: 同一行のテーブル内項目で空白以外をカウント

    • TR_COUNTA(fieldcode[,fieldcode...])
    • 例 TR_COUNTA(数値T1,数値T2,文字列T1)
    • 例 TR_COUNTA(1,2,"A",,3) -> 4
  • TR_MAX: 同一行のテーブル内項目で最大値

    • 例 TR_MAX(数値T1,数値T2,数値T3)
    • 例 TR_MAX(1,2,3) -> 3
  • TR_MIN: 同一行のテーブル内項目で最小値

    • 例 TR_MIN(数値T1,数値T2,数値T3)
    • 例 TR_MIN(1,2,3) -> 1
  • TR_SUM: 同一行のテーブル内項目で合計

    • 例 TR_SUM(数値T1,数値T2,数値T3)
    • 例 TR_SUM(1,2,3) -> 6

日付関数

  • DATE_DIFF: 日付差分関数

    • DATE_DIFF(fieldcode|"TODAY" ,fieldcode|"TODAY" ,type)
      • type : "years", "months", "weeks", "days", "hours", "minutes", "seconds", "milliseconds"
    • 例 DATE_DIFF(日付, "TODAY", "years")

  • DATE_FORMAT: 日付関数

    • DATE_FORMAT(fieldcode [,format [,timezone]])
    • DATE_FORMAT("TODAY"[,format [,timezone]])
    • 例 DATE_FORMAT(日付, "YYYY-MM-DD")
    • 例 DATE_FORMAT(日付, "e")
      • 曜日を 0 ~ 6 で返す
    • 例 DATE_FORMAT(日付, "ddd")
      • 曜日を Sun, Mon... で返す
    • 例 DATE_FORMAT(日時, "YYYY-MM-DDTHH:mmZ")

※DATE_FORMATは、moment.js というライブラリを使っており、その書式が使えます。
moment.js の書式

  • DATE_ADD: 日付加算

    • DATE_ADD(formula|"TODAY", num, type[, format])
      • formula : fieldcode, string, number, "TODAY"
        • fieldcode: 日付
        • string: (ex:"2023-07-12")
        • number: (ex:1689151920) ※ "2023-07-12" の UNIX時間
        • "TODAY": 本日の日時 "YYYY-MM-DD HH:MM"
      • num: 数値、formula
      • type : "year", "month", "week", "day", "hour", "minute", "second"
      • format : default("YYYY-MM-DD")
        • ※DATE_ADDは、moment.js というライブラリを使っており、その書式が使えます。
        • moment.js の書式
    • 例 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"
  • FISCAL_YEAR: 指定日と年度開始日から年度を返す

    • FISCAL_YEAR(項目|"TODAY", "04-01")
    • 例 FISCAL_YEAR(日付,"04-01")
    • 例 FISCAL_YEAR("TODAY","04-01")
    • 例 FISCAL_YEAR("2024-03-01","04-01") -> 2023
    • 例 FISCAL_YEAR("2024-04-01","04-01") -> 2024
  • 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分")

文字列関数

  • ASC: 全角文字を半角文字に変換

    • ASC(fieldcode [,"akmnst"])
      • option : "akmnst" 変換対象文字種類
        • "a": アルファベット
        • "k": カナ
        • "m": 記号 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}
        • "n": 数字
        • "s": 空白
        • "t": チルダ ~
    • 例 ASC(文字列)
    • 例 ASC(文字列, "a")
    • 例 ASC(文字列, "an")
  • JIS: 半角文字を全角文字に変換

    • JIS(fieldcode [,"akmnst"])
      • option : "akmnst" 変換対象文字種類
        • "a": アルファベット
        • "k": カナ
        • "m": 記号 !"#$%&'()*+,-./:;<=>?@[\]^_`{|}
        • "n": 数字
        • "s": 空白
        • "t": チルダ ~
    • 例 JIS(文字列)
    • 例 JIS(文字列, "a")
    • 例 JIS(文字列, "an")
  • HIRAGANA: 全角カナを全角かなに変換

    • HIRAGANA(fieldcode)
    • 例 HIRAGANA(文字列)
  • KATAKANA: 全角かなを全角カナに変換

    • KATAKANA(fieldcode)
    • 例 KATAKANA(文字列)
  • FIND: 文字列の検索で、文字位置を返す

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

  • MATCH: 文字列の検索(正規表現)で、文字列(g オプション指定時は配列)を返す

    • MATCH(fieldcode, pattern[, flags])
      • flag: "g", "i", "m", "u", "y"
    • 例 MATCH(文字列, "A.b", "i")

  • 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)

  • REPEAT: 文字列の繰り返し

    • REPEAT(fieldcode, count)
    • 例 REPEAT(文字列, 4)
    • 例 REPEAT(文字列, 数値)
    • 例 REPEAT("ABC", 数値)
  • 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"
        • "g": マッチした文字列をすべて置き換える
        • "i": 大文字・小文字を区別しない
        • "m": 複数行に対応
        • "u": Unicode 対応
        • "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)

  • RIGHT: 文字列の右

    • RIGHT(fieldcode, length)
    • 例 RIGHT(文字列, 3)

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

    • SLICE(fieldcode, start, end)
    • 例 SLICE(文字列, 2, 3)
    • 例 SLICE(チェックボックス, 2, 3)

  • STR_COMP: 文字列の比較

    • STR_COMP(fieldcode, fieldcode)
    • 例 STR_COMP(文字列1, 文字列2)
    • 例 STR_COMP("b", "a") -> -1
    • 例 STR_COMP("a", "a") -> 0
    • 例 STR_COMP("a", "b") -> 1
  • SUBSTR: 文字列の切り出し(0 から開始)

    • SUBSTR(fieldcode, start, length)
    • 例 SUBSTR(文字列, 2, 3)

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

    • SUBSTRING(fieldcode, start, end)
    • 例 SUBSTRING(文字列, 2, 3)

  • TRIM: 文字列から先頭および末尾の空白を削除

    • TRIM(fieldcode)
    • 例 TRIM(文字列)

  • LTRIM: 文字列から先頭の空白を削除

    • LTRIM(fieldcode)
    • 例 LTRIM(文字列)

  • RTRIM: 文字列から先頭および末尾の空白を削除

    • RTRIM(fieldcode)
    • 例 RTRIM(文字列)

  • LENGTH: 文字列の長さ

    • LENGTH(fieldcode)
    • 例 LENGTH(文字列)

  • NEWLINE: 改行文字を返す

    • NEWLINE()
    • 例 "AA"&NEWLINE()&"BB"
  • DQUOTE: 「"」ダブルクォーテーションを返す

    • DQUOTE()
    • 例 DQUOTE()&"ABC"&DQUOTE() -> '"ABC"'
    • 例 DQUOTE(TODAY()) -> '"2022-03-21"'
  • MAX_STR:テーブル内項目で最大の文字列|指定された項目で最大の文字列

    • MAX_STR(テーブル内項目[,...])
    • 例 MAX(文字列)
    • 例 MAX(文字列1,文字列2,文字列3)
    • 例 MAX_STR("A","B","C") -> "C"
    • 例 MAX_STR("10","20","3","10") -> "3"
  • MIN_STR:テーブル内項目で最小の文字列|指定された項目で最小の文字列

    • MIN_STR(テーブル内項目[,...])
    • 例 MAX(文字列)
    • 例 MAX(文字列1,文字列2,文字列3)
    • 例 MIN_STR("A","B","C") -> "A"
    • 例 MIN_STR("10","20","3","10") -> "10"
  • ENCODE_URI:URIをエンコード

  • ENCODE_URICP:URI構成要素をエンコード

    • ENCODE_URICP(文字列)
    • 例 ENCODE_URICP("01") -> "%EF%BC%90%EF%BC%91"
  • DECODE_URI:URIをデコード

  • DECODE_URICP:URI構成要素をデコード

    • DECODE_URICP(文字列)
    • 例 ENCODE_URICP("01") -> "%EF%BC%90%EF%BC%91"

JSON 関数

  • JSON_S: 配列・オブジェクトを文字列に変換

    • JSON_S(項目[, flag ])
      • flag: クォーテーション変換 "->'
        • 1: する、0: しない
    • 例 jSON_S(ARRAY(1,2,3)) -> [1,2,3]
    • 例 JSON_S(ARRAY("A","B")) -> ['A','B']
    • 例 JSON_S(ARRAY("A","B"),0) -> ["A","B"]
    • 例 JSON_S(JSON_P("{'code':'user1'}"),0) -> {"code":"user1"}
  • JSON_P: 文字列を配列・オブジェクトに変換

    • JSON_P(項目[, flag ])
      • flag: クォーテーション変換 '->"
        • 1: する、0: しない
    • 例 JSON_P("[1,2,3]") -> [1,2,3]
    • 例 JSON_P("['A','B']") -> ["A","B"]
    • 例 JSON_P("{'code':'user1'}") -> {"code":"user1"}

テーブル関数

  • OTCSV: テーブル内項目をcsv文字列にする

    • OTCSV(テーブル[,TPOUT(区分,数量...)...])
    • [TPOPT] 関数で、オプションを指定 TPOPT("HEADER","N")
      • HEADER: "Y": あり、"N": なし :ヘッダー行の有無
      • TITLE: "code": フィールドコード、"label": ラベル :ヘッダー行のタイトル
      • SEP: 規定値 "," :区切り文字を指定
      • QMARKS: 規定値 '"' :引用符を指定
      • OTYPE: 規定値 "object" :値の形式。"string": 配列は。「,」区切り
    • [TPFILTER(条件)]: 出力するテーブル行の条件を指定
      • TPFILTER(数量>0)
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定
      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • [TPLABEL("ラベル"[,"ラベル"...]): 出力する項目名を変更
      • TPLABEL("区分","金額")
    • 例 OTCSV(テーブル)
      • テーブルの全項目を CSVに変換。
      • "日付","ドロップダウン","数値"

        "2022-01-19","sample2","333"

        "2022-01-03","sample1","77799"
    • 例 OTCSV(テーブル, TPOPT("QMARKS","'"), TPOUT(ドロップダウンT, 数値T))
      • テーブルのドロップダウンT, 数値T項目を引用符「'」で変換
    • 例 OTCSV(テーブル, TPOPT("TITLE","label"), TPOUT(ドロップダウンT, 数値T))
      • テーブルのドロップダウンT, 数値T項目を項目ラベルで変換
    • 例 OTCSV(テーブル, TPOUT(日付,チェックボックス))
      • "日付","チェックボックス"

        "2022-01-04","[""sample2""]"

        "2022-01-01","[""sample1"",""sample2""]"
    • 例 OTCSV(テーブル, TPOUT(日付,チェックボックス),TPOPT("OTYPE","string"))
      • "日付","チェックボックス"

        "2022-01-04","sample2"

        "2022-01-01","sample1,sample2"
  • OTVAL: テーブル内項目をJSON文字列にする

    • OTVAL(テーブル[,TPOUT(区分,数量...)]...)
    • [TPOUT(項目[,...])]: 出力項目を指定。指定が無い場合は、テーブルの全項目
    • [TPOPT] 関数で、オプションを指定 TPOPT("QMARKS","'")
      • QMARKS: 規定値 '"'
    • [TPFILTER(条件)]: 出力するテーブル行の条件を指定 
      • TPFILTER(数量>0)
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定
      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • [TPLABEL("ラベル"[,"ラベル"...]): 出力する項目名を変更
      • TPLABEL("区分","金額")
    • 例 OTVAL(テーブル)
      • [{"日付":"2022-01-19","ドロップダウン":"sample2","数値":"333"},

        {"日付":"2022-01-03","ドロップダウン":"sample1","数値":"77799"}]
    • 例 OTVAL(テーブル, TPOPT("QMARKS","'"), TPOUT(ドロップダウン, 数値))
      • [{'ドロップダウン':'sample2','数値':'333'},

        {'ドロップダウン':'sample1','数値':'77799'}]
  • CSV_TVAL: CSVをテーブル入力データに変換

    • CSV_TVAL(CSV項目[,TPOUT(出力先テーブル内項目),...]
    • [TPOPT] 関数で、オプションを指定 TPOPT("HEADER","N")
      • HEADER: "Y": あり、"S",: スキップ、"N": なし :ヘッダー行の処理
      • TITLE: "code": フィールドコード、"label": ラベル :ヘッダー行のタイトルの種類
      • SEP: 規定値 "," :区切り文字を指定
      • QMARKS: 規定値 '"' :引用符を指定
      • MAXROWS: 規定値 "" :最大行数
    • [TPOUT(項目[,...])]: 出力項目を指定。指定が無い場合は、テーブルの全項目
      • CSVデータの並び位置で出力項目に変換

        ※@ を指定すると除外
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定
      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • [TPLABEL("ラベル"[,"ラベル"...]): 出力する項目名を変更
    • 例 CSV_TVAL(CSV文字列)
    • 例 CSV_TVAL(CSV文字列,TPOPT("TITLE","label")))
      • CSVヘッダー行のタイトルを項目ラベルとして処理
    • 例 CSV_TVAL(CSV文字列,TPOPT("HEADER","S"),TPOUT(文字列,数値),TPSORT(数値,0)
      • CSVヘッダー行をスキップして、行の先頭から「文字列」,「数値」のフィールドコードとして取得して、数値の降順でソート
  • TLTABLE: テーブルの集計関数

    • TLTABLE(テーブル,

      TPKEY(日付,ドロップダウン), :キー項目

      TPVAL(数値), :集計項目[,"sum","max","min","join","uniq"]

      TPOUT(日付T2,ドロップダウンT2,数値), :出力先項目

      [TPOPT("MAXROWS",10)...])
    • TPKEY: 集計キーとなる項目: TPKEY(日付,ドロップダウン,文字列)
    • TPVAL: 集計項目(計算式可)と集計方法(規定値:"sum")
      • 集計方法: "sum","max","min","join","uniq"
      • TPVAL(数値,数値,"max")
      • TPVAL(チェックボックス,"uniq",SEL_CODE(ユーザー選択,"array"),"uniq")
    • TPOUT: 出力先項目
      • キー項目と集計項目の数の合計と同じ出力先項目数を指定
      • TPKEY(日付),TPVAL(数値),TPOUT(日付1,数値1)
    • [TPOPT] 関数で、オプションを指定
      • MAXROWS: 規定値 "" :最大行数
    • [TPFILTER(条件)]: 出力するテーブル行の条件を指定 
      • TPFILTER(数量>0)
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定
      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • [TPLABEL("ラベル"[,"ラベル"...]): 出力する項目名を変更
      • TPLABEL("区分","金額")
    • 例 TLTABLE(テーブル,TPKEY(文字列),TPVAL(数値),TPOUT(文字列2,数値2)
    • 例 TLTABLE(テーブル,TPFILTER(数値>0),TPKEY(文字列),TPVAL(数値),TPOUT(文字列2,数値2)
      • 数値>0 の行のみ集計
    • 例 TLTABLE(テーブル,TPKEY(文字列),TPVAL(数値),TPOUT(文字列2,数値2),
      TPSORT(数値2,0)
      • 数値2 の降順で出力
    • 例 TLTABLE(テーブル,TPKEY(文字列),
      TPVAL(チェックボックス,"uniq",SEL_CODE(ユーザー選択,"array"),"uniq"),
      TPOUT(チェックボックス2,ユーザー選択2))
      • チェックボックス、ユーザー選択の値を重複なしで集約
  • TABLE_SORT

    • TABLE_SORT(テーブル,

    • [TPFILTER(条件)]: 出力するテーブル行の条件を指定 

      • TPFILTER(数量>0)
    • [TPSORT(項目[,フラグ]...)]: 出力するテーブル行のソートを指定

      • フラグ: 1: 昇順、0: 降順
        • TPSORT(項目1,0,項目2)
    • 例 テーブル内項目にルックアップ・添付ファイル項目がない場合
      TABLE_SORT(テーブル, TPFILTER(数値>0), TPSORT(数値))

    • 例 テーブル内項目にルックアップ・添付ファイル項目がある場合は、レコード保存後イベントでソートすること
       IF(EV_INFO("mode")="success"&&更新日時,
        TABLE_SORT(テーブル, TPSORT(数値))
       )

ボタン関連

  • BUTTON: ヘッダー部、スペースエリアにボタン表示

    ボタン名と、クリック時の項目と計算式を指定
    ボタン名: 文字列。

    • BUTTON(ボタン名,FSET(項目,value)[,...])
    • 例 BUTTON("文字セット", FSET(文字列,"ABC"))
    • 例 BUTTON("項目セット", FSET(数値,1), FSET(チェックボックス,ARRAY("sample1")))
  • BOPT で、CSS を指定

    • BUTTON(BOPT("TITLE","ボタン名"[,"CSS","value"]),FSET(項目,value)[,...])
    • 例 BUTTON(BOPT("TITLE","BUTTON1",
      "CSS","{'color':'white',
      'background-color':'#3498db'}"),
      FSET(文字列,"ABC"))
  • DAIALOG; ボタン名と、クリック時の項目と計算式を指定

    • DIALOG(ARRAY(ボタン名,HTML,ICON,FLAG,CSS),[FSET(項目,value),...])
      • ボタン名: 文字列。
      • HTML: ダイアログに表示する文字列
      • ICON: icon 指定 "info","warning","question","success","error",""
      • FLAG: キャンセルボタンの表示 1,0
      • CSS: ボタンの CSS
    • 例 DIALOG(ARRAY("文字セット","文字列をセットします"), FSET(文字列,"ABC"))
    • 例 DIALOG(ARRAY("項目セット","数値とチェックボックスをセット","warning"),
      FSET(数値,1), FSET(チェックボックス,ARRAY("sample1")))
  • BOPT で、オプション指定

    • DIALOG(BOPT("TITLE","ボタン名"
      [,"HTML","TEST",]
      [,"ICON","value"]
      [,"SCAN",1]
      [,"CSS","value"])
      [,FSET(項目,value),...])
    • 例 DIALOG(BOPT("TITLE","ボタン1",
      "HTML","TEST",
      "CSS","{'color':'red'}"),
      FSET(文字列,"ABC"))
  • FSET: BUTTON 関数で、クリック時に項目に計算値を指定

    • FSET(項目, value [,rowno])
      • 項目:
      • value: 設定値
      • rowno: テーブル行位置
    • 例 FSET(文字列,"ABC")
    • 例 FSET(数値,1)
    • 例 FSET(チェックボックス,ARRAY("sample1"))
    • 例 FSET(文字列T1,"ABC",2)
  • FSET_TADD: BUTTON 関数で、クリック時にテーブルに指定した行を追加

    • FSET_TADD(テーブル, value)
      • テーブル
      • value: 配列の行データ。または JSON 文字列を指定
    • 例 FSET(テーブル,"[{'文字列':'abc'}]")
    • 例 FSET(テーブル,"[{'文字列':'abc'},{'文字列':'xyz'}]")
    • 例 FSET(テーブル, ARRAY_FOR(10,idx, DIC(
      "作業ステータス","未着手",
      "チェックボックス",ARRAY("A","B")
      ))

論理関数

  • 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")

ディクショナリー関数

  • DIC: ディクショナリー作成 (指定された key と value で、Dictionaryを作成)

    • DIC([key,value][,...])
    • 例 DIC() -> {}
    • 例 DIC("A",1) -> {"A":1}
    • 例 DIC("A",1,"B",2) -> {"A":1,"B",2}
    • 例 DIC("A",1,"B",ARRAY(1,2)) -> {"A":1,"B",[1,2]}
    • 例 DIC("A",1,"B",DIC("B1",2,"B2",3)) -> {"A":1,"B":{"B1":2,"B2":3}}
  • DIC_ASSIGN: 指定された Dictionary で、新たな Dictionaryを作成

    • DIC_ASSIGN(dictionary[,...])
    • 例 DIC_ASSIGN(DIC("A",1)) -> {"A":1}
    • 例 DIC_ASSIGN(DIC("A",1),DIC("B",2)) -> {"A":1,"B",2}
    • 例 DIC_ASSIGN(DIC("A",1),DIC("A",2,"B",ARRAY(1,2))) -> {"A":2,"B",[1,2]}
  • DIC_COUNT: 指定された Dictionary の要素数

    • DIC_COUNT(dictionary)
    • 例 DIC_COUNT(DIC("A",1)) -> 1
    • 例 DIC_COUNT(DIC("A",1,"B",2)) -> 2
  • DIC_DEL: Dictionary から指定された要素を削除

    • DIC_DEL(dictionary,key[,key...])
    • 例 DIC_DEL(DIC("A",1),"A") -> {}
    • 例 DIC_DEL(DIC("A",1,"B",2,"C",3),"A","B") -> {"C",3}
    • 例 DIC_DEL(DIC("A",1,"B",2,"C",3),ARRAY("A","B")) -> {"C",3}
  • DIC_EXISTS: Dictionary に指定されたキーがあるかチェック

    • DIC_EXISTS(dictionary,key)
    • 例 DIC_EXISTS(DIC("A",1),"A") -> true
    • 例 DIC_EXISTS(DIC("A",1,"B",2),"C") -> false
  • DIC_ITEM: Dictionary に指定されたキーの値を取得。値指定時は値をセット

    • DIC_ITEM(dictionary,key[,value])
    • 例 DIC_ITEM(DIC("A",1),"A") -> 1
    • 例 DIC_ITEM(DIC("A",1),"B") -> ""
    • 例 DIC_ITEM(DIC("A",1),"A","2") -> {"A",2}
    • 例 DIC_ITEM(DIC("A",1),"B",2) -> {"A",1,"B",2}
  • DIC_KEYS: 指定された Dictionary のキーを配列で取得

    • DIC_KEYS(dictionary)
    • 例 DIC_KEYS(DIC("A",1)) -> ["A"]
    • 例 DIC_COUNT(DIC("A",1,"B",2)) -> ["A","B"]
  • DIC_MAP: Dictionary の要素を式で配列に変換

    • DIC_MAP(dictionary,key,value[,index],formula)
    • 例 DIC_MAP(DIC("A",1,"B",2),key,val,key&":"&val) -> ["A:1","B:2"]
    • 例 DIC_MAP(DIC("A",1,"B",2),key,val,val) -> [1,2]
    • 例 DIC_MAP(DIC("A",1,"B",2),key,val,idx,key&":"&(val+idx)) -> ["A:1","B:3"]

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

  • SEL_CODE: コード情報

    • SEL_CODE(fieldcode [, "code"|"array"|"text"|"obj" [, delimiter]])
    • 例 SEL_CODE(ユーザー選択)
    • 例 SEL_CODE(ユーザー選択, "array") -> -> ["user1code","user2code"]
    • 例 SEL_CODE(ユーザー選択, "text", ", ") -> "user1code, user2code"
    • 例 SEL_CODE(ユーザー選択, "obj") -> [{code:"user1code", name:"user1name"}]
    • 例 SEL_CODE(組織選択)
    • 例 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(更新者)
    • 例 SEL_NAME(作業者)
  • SET_CODE: ユーザー選択、組織選択、グループ選択のコード設定

    • SET_CODE(fieldcode [, fieldcode...]])
    • 例 SET_CODE("usercode1","usercode2")
    • 例 SET_CODE(ユーザー選択)
    • 例 SET_CODE(SEL_CODE(ユーザー選択, "array"),"usercode1")
    • 例 SET_CODE("orgcode1","orgcode1")
    • 例 SET_CODE("groupcode1")

ログイン情報

  • LOGIN_NAME: ログイン名

    • LOGIN_NAME()
    • 例 LOGIN_NAME()

  • LOGIN_CODE: ログインコード

    • LOGIN_CODE()
    • 例 LOGIN_CODE()

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

    • LOGIN_EMAIL()
    • 例 LOGIN_EMAIL()

  • LOGIN_INFO: ログインユーザーのユーザー情報

    • LOGIN_INFO([option])
      • option:
      • id: ユーザーid
      • code: ログイン名
      • name: 表示名
      • email: メールアドレス
      • url: URL
      • employeeNumber: 社員番号
      • phone: 電話番号
      • mobilePhone: 携帯電話
      • extensionNumber: 内線
      • timezone: タイムゾーン
      • isGuest: ゲスト(true, false)
      • language: 言語
    • 例 LOGIN_INFO()
    • 例 LOGIN_INFO("code")
    • 例 LOGIN_INFO("code,name")
    • 例 SET_CODE(LOGIN_INFO())

ユーザー情報

ユーザー情報を変更した場合、UINFO 関数へ反映するまで最大4時間かかります。
UINFO, OINFO, GINFO 関数利用時に「ユーザー情報」チェックが必要です。
UINFO, OINFO, GINFO 関数を使用時、ユーザー数等が多い場合に画面表示の処理時間が長くなります。
ゲストスペース時の UINFO 関数は、ゲストスペースメンバーのみ対応します。

  • UINFO: ユーザー情報
    • UINFO([user][,option][,separator])
      • user: [code...] or [id..] or [code,id...]
      • option:
        • id: ユーザーid
        • code: ログイン名
        • ctime: 作成日
        • mtime: 更新日
        • valid: 有効
        • name: 表示名
        • surName: 姓
        • givenName: 名
        • surNameReading: よみがな(姓)
        • givenNameReading: よみがな(名)
        • localName: 別言語での表示名
        • localNameLocale: 別言語
        • timezone: タイムゾーン
        • locale: 言語
        • description: コメント
        • phone: 電話番号
        • mobilePhone: 携帯電話
        • extensionNumber: 内線
        • email: メールアドレス
        • callto:
        • url: URL
        • employeeNumber: 社員番号
        • birthDate: 誕生日
        • joinDate: 入社日
        • primaryOrganization: 優先する組織のid
        • sortOrder: 表示優先度
        • #xxxx: カスタマイズ項目のコード
        • orgs: 所属組織
        • groups: 所属グループ
        • setData: ユーザー選択項目用データ
      • separator: 区切り文字
    • UINFO() -> ["code1",...]
    • UINFO("code1") -> [{"id":"1","code":"code1",...}]
    • UINFO("code1,code2") -> [{"id":"1","code":"code1",...},{"id":"2","code":"code2",...}]
    • UINFO("code1","name") -> ["name1"]
    • UINFO("code1","name,birthDate") -> ["name1,2000-01-01"]
    • UINFO("code1,code2","name,birthDate") -> ["name1,2000-01-01","name2,2000-01-01"]
    • UINFO("code1,code2","name,birthDate","+") -> ["name1+2000-01-01","name2+2000-01-01"]
    • UINFO("code1","orgs") -> ["org1,org2"]
    • UINFO("code1","groups") -> ["group1,group2"]
    • UINFO("code1","setData") -> [{"code":"code1","name":"name1"}]

組織情報

組織情報を変更した場合、OINFO 関数へ反映するまで最大1時間かかります。
すぐに反映させたい場合は、ブラウザーの新規タブで kintone 画面を開いてください。

  • OINFO:組織情報
    • OINFO([organization][,option][,separator])
      • organization: [code...] or [id..] or [code,id...]
      • option:
        • id: 組織id
        • code: 組織コード
        • name: 表示名
        • localName: 別言語での表示名
        • localNameLocale: 別言語
        • parentCode: 親組織
        • children: 子組織
        • description: 説明
        • users: 組織メンバーのユーザーコード
        • titles: 組織メンバーの役職
        • userNames: 組織メンバーのメンバー名+役職
        • setData: 組織選択項目用データ
    • OINFO() -> ["code1",...]
    • OINFO("code1") -> [{"id":"1","code":"code1",...}]
    • OINFO("code1,code2") -> [{"id":"1","code":"code1",...},[{"id":"2","code":"code2",...}]
    • OINFO("code1","name") -> ["name1"]
    • OINFO("code1","id,name") -> ["1,name1"]
    • OINFO("code1,code2","id,name") -> ["1,name1","2,name2"]
    • OINFO("code1,code2","id,name","+") -> ["1+name1","2+name2"]
    • OINFO("code1","users") -> ["user1,user2"]
    • OINFO("code1","userNames") -> ["userNames1,userNames2"]
    • OINFO("code1","setData") -> [{"code":"code1","name":"name1"}]

グループ情報

グループ情報を変更した場合、GINFO 関数へ反映するまで最大1時間かかります。
すぐに反映させたい場合は、ブラウザーの新規タブで kintone 画面を開いてください。

  • GINFO:グループ情報
    • GINFO([group][,option][,separator])
      • group: [code...] or [id..] or [code,id...]
      • option:
        • id: グループid
        • code: グループコード
        • name: 表示名
        • description: 説明
        • users: グループメンバーのユーザーコード
        • setData: グループ選択項目用データ
    • GINFO() -> ["code1",...]
    • GINFO("code1") -> [{"id":"1","code":"code1",...}]
    • GINFO("code1,code2") -> [{"id":"1","code":"code1",...},[{"id":"2","code":"code2",...}]
    • GINFO("code1","name") -> ["name1"]
    • GINFO("code1","id,name") -> ["1,name1"]
    • GINFO("code1,code2","id,name") -> ["1,name1","2,name2"]
    • GINFO("code1,code2","id,name","+") -> ["1+name1","2+name2"]
    • GINFO("code1","users") -> ["user1,user2"]
    • GINFO("code1","setData") -> [{"code":"code1","name":"name1"}]

イベント情報

  • EV_INFO: イベント情報

    • EV_INFO(option)
      • option: "type","cate","mode","lan","mobile","fcode","guestUser","action","status","nextStatus"
        • "type": "app.record.create.show","app.record.edit.show"...
        • "cate": "create","edit","detail","change"
        • "mode": "show","submit","success"
        • "lan": "ja","en","zh"
        • "mobile": true, false
        • "fcode": change イベント時の変更されたフィールドコード
        • "guestUser": true, false
        • "action": "処理開始" ※プラセス管理のアクション名
        • "status": "処理中" ※プロセス管理のアクション前ステータス
        • "nextStatus": "完了" ※プロセス管理のアクション後ステータス
    • 例 EV_INFO("type") -> "app.record.edit.show"
    • 例 EV_INFO("cate") -> "edit"
    • 例 EV_INFO("mode") -> "show"
    • 例 EV_INFO("lan") -> "ja"
    • 例 EV_INFO("mobile") -> false
    • 例 EV_INFO("fcode") -> "数値"
    • 例 EV_INFO("guestUser") -> false
    • 例 EV_INFO("action") -> "処理開始"
    • 例 EV_INFO("status") -> "未処理"
    • 例 EV_INFO("nextStatus") -> "処理中"
  • EV_SET: テスト用イベント情報を設定

    • EV_SET(option)
      • option: "type","lan","mobile"
        • "type": "app.record.create.show","app.record.edit.show"...
        • "lan": "ja","en","zh"
        • "mobile": true, false
    • 例 LET(w, EV_SET("type", "app.record.edit.show"), EV_INFO("mode")) -> "show"
    • 例 LET(w, EV_SET("lan", "en"), EV_INFO("lan")) -> "en"
    • 例 LET(w, EV_SET("mobile", 1), EV_INFO("mobile")) -> true

LET関数(変数を利用した計算式)

一つ以上の変数名と変数名を使用した計算式を指定できます。

  • LET: LET関数内で変数を定義し、LET関数内で使用可
    • LET(変数名1,式1[,変数名2,式2[,...], 式)
    • 例 LET(pi,3.1415926, 2pi数値)
    • 例 LET(pi,3.1415926, r,数値, pi*r**2)
    • 例 LET(x,1,x,x+1,x) -> 2
    • 例 LET(x,1,y,2,x,x+y,x) -> 3
    • 例 LET(縦,数値1, 横,数値2, 縦*横)

LOG 関数(計算式の実行結果をコンソールログに出力)

  • LOG: 計算式の実行結果をコンソールログに出力
    • LOG("文字列1", 文字列1) -> ["文字列1","ABC"]

計算式の書き方

フィールドコードの設定

計算式では、 フィールドコードを使いますので、初期設定のままでは大変分かりにくくなってしまいます。
始めに、フィールドコードをラベルにあわせて設定しましょう。
なお、フィールドコードには使用できない文字がありますので、適時変更します。

  • 既定のフィールドコード: 数値 * 数値_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

ヘッダー部、スペースエリアの設定

追加・編集画面で、ヘッダー部、スペースエリアにボタン表示することが出来ます。

2022-01-14_09h03_57.png

  • BUTTON 関数: ヘッダー部、スペースエリアにボタン表示と、ボタンクリック時の項目設定が出来ます。
  • DIALOG 関数: ヘッダー部、スペースエリアにボタン表示と、ボタンクリック時にダイアログ表示を行い、「OK」、「Cancel」で項目設定の実行を制御できます。

テーブルの設定

テーブルに計算式結果の内容で、下記の処理を行います。

  • 空文字: 処理なし

  • 数値: 0 ~ 500 までをテーブル行数として制御

    • 0 の場合、編集・追加画面表示中は、kintone の仕様上テーブル行が1行存在するが、DOM 操作でテーブル行を非表示にする。
      レコード保存時に、テーブル行は実際に0行になる。
    • 100行以上のテーブル行数は、レコード表示が完了するまでかなり時間がかかります。
  • JSON 文字列: レコード追加時のテーブルの初期値を設定 

    • 引用符は、計算式プラグインの都合上、「"」の代わりに「'」を使用
    • 例:"[{'日付':'2022-01-19','ドロップダウン':'sample2','数値':'393'},

      {'日付':'2022-01-03','ドロップダウン':'sample1','数値':'77900'}]"
    • ここで指定するJSON文字列は、OTVAL 関数で作成可能。
  • 配列: ARRAY([テーブル行数], テーブル設定文字列, テーブル更新タイミング)

    • 例: ARRAY("",

      "[{'日付':'2022-01-19','ドロップダウン':'sample2','数値':'393'},

      {'日付':'2022-01-03','ドロップダウン':'sample1','数値':'77900'}]"

      ,1)
      • テーブル行数 "" : テーブル行数処理なし
      • テーブル設定文字列: テーブル2行分の日付、ドロップダウン、数値を設定
      • テーブル更新タイミング:
        • 規定値 0: レコード追加時のみ設定
        • 1: レコード追加・更新時に設定
  • 編集: チェックが無しで、テーブル行の追加・削除ボタンを非表示

  • 非表示: チェックすると、テーブル全体を非表示

2022-01-04_23h06_27.png

グループの設定

グループ項目の開閉を計算式で指定できます。
計算結果が true の場合、グループを展開。false の場合、グループを閉じる

生年月日が入力されたらグループを開く例

2022-05-04_12h29_01.png
2022-05-04_12h28_08.png

レコード番号

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

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

リビジョン

計算式で、$revision を参照できます。(Ver.35 以降でサポート)
$revision は、現在の値を返します。
新規レコード追加画面では、$revision は、"" となります。

コメントの書き方

計算式に「//」を記述すると、行末までコメントになります。
(コメント機能は、Ver.34 以降でサポート)

  • 例1:1行すべてコメント
    • // 1行コメント

      DATE_FORMAT(日付)
  • 例2:行の途中から行末までコメント
    • DATE_FORMAT(日付) // コメント
  • 例3:コメントが混在
    • // 1行コメント

      DATE_FORMAT(日付) //コメント

      & 時刻 // コメント

"//"文字列の記述方法

計算式内で「//」を記述すると、行末までコメントになりますので、"//" 文字列を直接記述できません。
文字列連結で、「/」を分けて記述してください。

  • 記述例
    • "/"&"/"
    • "AB/"&"/CD"

プラグインの追加

  • 「kintone システム管理 > プラグイン」で追加します。
  • 「アプリの設定 > プラグイン」で、アプリに追加します。

2017-06-07_18h33_39.png

プラグインの設定

  • 対象アプリで計算式を使用する項目を選択して、計算式を設定します。
  • フィルタ機能で、表示項目を絞れます。
  • グリッドのラベル欄をクリックすると、その項目順にソートされます。
  • 「保存する」をクリックします。

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

2019-02-24_15h07_07.png

※ 計算式に「改行」を指定して、式を見やすく出来ます。
「改行」は、実行時には無視されます。

循環参照の許可

計算式に自項目を含め、循環参照を指定可能にします。
計算処理が無限ループにならないように、計算式を指定する必要があります。

非同期計算

「非同期計算」をチェックすると、値変更イベントで非同期に計算処理を行います。
 項目の値変更時、「カーソル移動前に計算処理」から「カーソル移動後に計算処理」に変わります。
 テーブル等で値変更イベントが連続する場合、計算回数を削減し、処理時間を短縮を図ります。
 ※ベータ機能 大きな仕様変更・開発中止があり得ます

ユーザー情報

計算式で、UINFO, OINFO, GINFO 関数利用時に「ユーザー情報」チェックを指定

編集

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

非表示

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

ランク

計算式の実行順序をランクで指定できます。
ランクが大きい項目が実行順序が早く、未設定はランク 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

一括計算機能

一覧画面で、対象レコードの一括計算が出来ます。一括計算時の最大対象件数は20万件。

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

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

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

既存レコードの更新

計算式を変更後に、既存レコードの更新が出来ます。
対象は、対象アプリの全レコードです。

  • 「既存レコードを更新」ボタンをクリックします。
  • 対象レコード数が表示されます。
  • 「レコード更新」ボタンをクリックすると更新処理が開始されます。

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

※最大処理レコード20万件。20万超のレコードは、一覧の一括計算で対象レコードを絞って実行してください。
20万件処理時、読み込み 約 400 回 + 書き込み 2,000 回 = 合計約 2,400 回の API を発行します。
1アプリで1日に実行できるAPIリクエスト数は、10,000 回

2022-01-04_20h40_45.png

計算式ツール

計算式を作成するためのツール機能です。
レコード詳細画面、レコード追加・編集画面で利用できます。
複雑な計算式の作成や動作確認を行えます。

計算式ツールの有効化

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

2019-01-30_15h50_08.png

計算式ツールの表示

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

2021-06-25_18h37_26.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

関数・演算子・項目・計算式の入力サポート機能

右側のテーブルに、関数・演算子・項目・計算式が表示されます。
テーブル行をクリックすると、説明表示、ダブルクリックで計算式編集エリアに挿入などの機能があります。

2021-06-25_17h53_35.png

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

  • プラグイン設定をダウンロードできます。
  • 計算式を変更している場合は、変更後の設定が対象です。
  • ブラウザ IE については、プラグイン設定のダウンロードの動作対象外です。
2017-09-18_19h47_55.png

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

  • プラグイン設定をアップロードできます。
  • フィールドコードをキーにして、設定ファイルから計算式を設定します。
  • ブラウザ IE については、プラグイン設定のアップロードの動作対象外です。
2017-09-18_19h52_01.png
  • プラグイン設定ファイル情報を確認して、設定します。
2017-09-18_19h54_07.png

注意事項

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

    計算項目を計算式プラグインの計算式で使用した場合、
    計算項目の値が変化したタイミングでは、計算式プラグインの計算が行われません。
    これは、kintone イベント処理の仕様によるものです。
    ただし「保存」時のイベントで再計算されますので、レコード更新後には正しい値になります。
    対応策としましては、計算項目で指定している計算と同等の式を
    直接対象の項目に計算項目の代わりに設定してください。

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

計算式プラグインは 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"))

時刻項目の計算

時刻計算は、そのままでは計算できないのでダミーの日付を付加して計算します。

  • 時刻の30分後を計算する例
    • IF(時刻,DATE_ADD("2000-01-01 "&時刻,30,"minute","HH:mm"))

正規表現による置換

  • 数値の数字をスペースで区切る変換例です。
    正規表現を使った置換で、数値の前にスペースを追加して、
    SLICEで余計な先頭のスペースを外しています。
    • SLICE(REPLACERE(数値,"[0-9]","g"," $&"),1,100)
      ※数値: 数値項目のフィールドコード

計算式プラグインの使用例

利用ライブラリ

・jQuery MITライセンス
・jQuery-UI MITライセンス
・momentjs MITライセンス
・sweetalert2 MITライセンス
・FileSaver MITライセンス
・zlib MITライセンス
・bignumber.js MITライセンス
・kintone-ui-component MITライセンス
・idb ISCライセンス
・pqgrid 商用ライセンス

17
23
259

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
23

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?