フォームの自動計算フィールドで使用可能な変数や関数を教えて下さい
変数、演算子、関数の仕様について、必ずご一読ください。
使用可能な変数一覧
記載順で優先度が高く、同じ変数名で衝突する場合は優先度が高い変数で上書きされます。
フォームの入力値
申請フォームのフィールドに入力された値を、フィールドコードを変数名として ${フィールドコード}
で参照できます。変数は追加したフィールドの「変数名」のタブで確認できます。
変数として使用可能なフィールドの型は以下の通りです。
- テキスト
- 整数
- 数値
- プルダウン
- 日付
- 汎用マスタ(JSON文字列が代入されます)
- 自動計算
自動計算フィールドより上位に設置したフィールドの変数が参照できます。
明細付きワークフローで明細フォームのフィールドの変数を使用する場合、同じ明細行のフィールドの入力値が参照されます。
明細列の合計値
明細列の合計値を $sum${フィールドコード}
で参照できます。
汎用フォームでのみ参照できます。
申請者
申請者情報を $author
で参照できます。変数の値は次のプロパティを持つJSON文字列です。
代理申請の場合、申請したユーザーの情報が設定されます。
プロパティ名 | 説明 |
---|---|
id | ユーザーのUUID |
firstName | 名 |
lastName | 姓 |
fullName | 姓 と 名 を連結した文字列 |
Eメールアドレス | |
code | ユーザーのコード |
employeeId | ユーザーの社員番号 |
JSONサンプル
{
"id":"12345678-abcd-efgh-1234-123456789012",
"firstName":"太郎",
"lastName":"山田",
"fullName":"山田 太郎",
"email":"taro.yamada@example.com",
"code":"xxxxxxxxxxxxxxxx",
"employeeId":"12345678"
}
任意の項目を抽出する場合は json_lookup 関数を次のように使用してください。
json_lookup($author, "$.fullName") # 山田 太郎
代理申請の依頼者
代理申請の場合、代理を依頼したユーザーの情報を $proxyClientUser
で参照できます。
設定される内容は $author
と同一で、代理申請でない場合は null
となります。
申請チーム
申請チームの情報を $authorTeam
で参照できます。変数の値は次のプロパティを持つJSON文字列です。
プロパティ名 | 説明 |
---|---|
id | 申請チームのUUID |
name | 申請チーム名 |
fullName | 上位組織を含む申請チーム名 |
code | 申請チームのコード |
JSONサンプル
{
"id":"12345678-abcd-efgh-1234-123456789012",
"name":"◯◯部",
"fullName":"株式会社とくがわ / ◯◯部",
"code":"xxxxxxxxxxxxxxxx"
}
任意の項目を抽出する場合は json_lookup 関数を次のように使用してください。
json_lookup($authorTeam, "$.fullName") # 株式会社とくがわ / ◯◯部
json_lookup($authorTeam, "$.name") # ◯◯部
グローバル変数
自動計算用グローバル変数 で設定された値を ${変数名}
で参照できます。
数値・文字列
123
や "Hello"
のような数値と文字列を使用できます。
使用可能な演算子一覧
- 算術演算子は加算
+
、減算-
、乗算*
、除算/
が使用できます。 - 比較演算子は等号
==
、不等号!=
、以上>=
、以下<=
、より大きい>
、より小さい<
が数値の比較に使用できます。 - 括弧
()
で計算の優先順位を指定できます。
使用可能な関数一覧
自動計算フィールドで使用できる関数は、基本的にはGoogleスプレッドシートの同名の関数に準拠しています。
関数の仕様に適合しない引数を渡した場合、動作保証はされませんのでご了承ください。
算術関数
round: 四捨五入
round(x, [y])
- xに指定した値を四捨五入します。
- yに指定された桁数で小数部を四捨五入します。
使用例
round(3.14) # 3
round(3.144, 2) # 3.14
round(3.145, 2) # 3.15
round(123, -1) #120
ceil: 切り上げ
ceil(x, [y])
- xに指定した値を切り上げします。
- yに指定された桁数で小数部を切り上げします。
使用例
ceil(3.14) # 4
ceil(3.144, 2) # 3.15
ceil(3.145, 2) # 3.15
ceil(123, -1) #130
floor: 切り捨て
floor(x, [y])
- xに指定した値を切り捨てします。
- yに指定された桁数で小数部を切り捨てします。
使用例
floor(3.14) # 3
floor(3.144, 2) # 3.14
floor(3.145, 2) # 3.14
floor(123, -1) #120
max: 最大値
max(x, y, ...)
- 引数に渡された数値のうち、最大値を返します。
使用例
max(1, 2, 3) # 3
min: 最小値
min(x, y, ...)
- 引数に渡された数値のうち、最小値を返します。
使用例
min(1, 2, 3) # 1
mod: 剰余
mod(x, y)
- xをyで割った余りを返します。
使用例
mod(10, 3) # 1
比較関数
if: 条件分岐
if(論理式, TRUE値, FALSE値)
- 第一引数の論理式の結果に応じた値を返します。
- 第二引数のTRUE値には論理式が true の場合に返される値を、第三引数のFALSE値には論理式が false の場合に返される値を指定してください。
- TRUE値とFALSE値には、数値や文字列だけでなく関数も指定できます。
- 論理式の結果がtrue/false以外の値となる場合、次のように評価されます。
- 数値の場合
- 0 の場合は false と評価し、それ以外は true と評価します。
- 文字列の場合
- 空文字の場合は false と評価し、それ以外の場合はエラーとして空文字を返します。
- null の場合
- false として評価します。
- 数値の場合
使用例
# 整数型の $num フィールドが 100 以上の場合に 1 を返し、それ以外は 0 を返す
if($num >= 100, 1, 0)
# テキスト型の $text フィールドが空ではない場合に "Not empty" を、空の場合は "Empty" を返す
if(not(isblank($text)), "Not empty", "Empty")
if関数には 論理式、TRUE値、FALSE値の3つの引数が必要です。
if関数をネストするケースで期待する結果が得られなかったりエラーとなる場合、引数が不足しているなど誤っていることが考えられますのでご注意ください。
第一引数には 必ずtrueもしくはfalseを返す論理式を指定してください。
フィールドコードを直接指定する場合、そのフィールドの型や値によって意図しない結果となる場合がございますのでご注意ください。
and: すべての条件が満たされるか判定
and(expr, [expr2]...)
- 引数に指定された論理式がすべて true と評価される場合に true を返します。
- 引数に 0 が指定される場合は falseとして評価し、それ以外の数値や文字列が指定される場合は true として評価します。
使用例
and(1 == 1) # true
and(1 == 1, 2 == 2) # true
and(1 == 1, 2 == 3) # false
and(0) # false
or: いずれかの条件が満たされるか判定
or(expr, [expr2]...)
- 引数に指定された論理式のいずれかが true と評価される場合に true を返します。
- 引数に 0 が指定される場合は falseとして評価し、それ以外の数値や文字列が指定される場合は true として評価します。
使用例
or(1 == 1) # true
or(1 == 1, 2 != 2) # true
or(1 == 2, 2 == 3) # false
or(0) # false
not: 条件を満たさないか判定
not(expr)
- 引数に指定された論理式が false と評価される場合に true を返します。
- 引数に 0 もしくは空文字 "" が指定される場合は false として評価し、それ以外は true として評価します。
使用例
not(1 == 2) # true
not(1 == 1) # false
not(0) # true
not("") # true
equalText: 文字列比較
equalText(x, y)
- 引数xとyをそれぞれ文字列として一致しているか比較します。
使用例
equalText("hoge", "hoge") # true
equalText("hoge", "fuga") # false
この関数に文字列以外の引数を与えるとエラーになります。数値の比較には 比較演算子 を使用してください。
空文字であることを判定するには isblank関数 を使用してください。
isblank: 空文字判定
isblank(v)
- 引数に指定された文字列が空文字またはnullの場合にtrueを返します。
使用例
isblank("") # true
isblank("hoge") # false
isblank(" ") # false
文字列関数
concat: 文字列結合
concat(x, y, ...)
- 引数に指定された文字列または数値を結合して返します。
使用例
concat("a", "b", "c") # abc
concat("abc", 123) #abc123
left: 文字列の先頭から指定文字数まで取得
left(a, b)
- aの文字列の先頭からbに指定された文字数だけ返します。
使用例
left("あいうえお", 3) # あいう
right: 文字列の末尾から先頭に指定文字数まで取得
right(a, b)
- aの文字列の末尾からbに指定された文字数だけ返します。
使用例
right("あいうえお", 3) # うえお
mid: 文字列の中間から指定文字数まで取得
mid(a, b, c)
- aの文字列のbに指定した位置からcの文字数だけ返します。
使用例
mid("あいうえお", 2, 3) # いうえ
text: 指定した書式に変換
text(value, fmt)
- valueをfmtで指定した書式に変換した文字列を返します。
- 指定できる書式は以下の通りです。
数値形式
書式 | 説明 |
---|---|
0 | 数値。指定した桁数より数値の桁数が少ない場合はゼロ埋めします。 整数部をゼロ埋めする場合、「カンマ区切りで表示」のチェックは外してください。 |
# | 数値。指定した桁数より数値の桁数が少ない場合でもゼロ埋めしません。 |
日付形式
書式 | 説明 |
---|---|
YY | 2桁の年 |
yy | 2桁の年 |
yyyy | 4桁の年 |
m | 1桁か2桁の月 |
mm | 2桁の月もしくは時刻の分 |
mmm | 1月, 2月,...形式の月 |
mmmm | 1月, 2月,...形式の月 |
mmmmm | 月の数値 |
d | 1桁または2桁の日付 |
dd | 2桁の日付 |
ddd | 日, 月,...形式の曜日 |
dddd | 日曜日, 月曜日,...形式の曜日 |
H | 1桁か2桁の24時間制の時 |
h | 1桁か2桁の12時間制の時 |
HH | 24時間制の時 |
hh | 12時間制の時 |
s | 1桁か2桁の時刻の秒 |
ss | 時刻の秒 |
ss.000 | 時刻のミリ秒 |
AM/PM | 12時間制の午前/午後 |
使用例
text(1.2345, "0.##") # 1.23
text(1234567, "#,###円") # 1,234,567円
text(123, "00000") # 00123
text("2024-01-01", "yyyy/mm/dd") # 2024/01/01
text("2022-04-08T13:04:56", "hh:mm AM/PM") # 01:04 午後
json_lookup: JSON文字列から値を抽出
json_lookup(json, path)
- jsonに指定されたJSON文字列から、pathに指定されたJSONPathに基づいて抽出した値を返します。
- 第一引数のjsonにはJSON文字列が入力されているテキスト型のフィールドや、汎用マスタ型のフィールドのフィールドコードを指定してください。
- 第二引数のpathに指定するJSONPathの記法については、 こちらのヘルプ をご確認ください。なおフィルタ表現などの一部の記法に対応していません。
- 複数の要素が抽出される場合、最初の要素が返されます。
使用例
// 次のようなJSONが設定されているフィールドコード変数 $jsonStr から任意の項目を抽出する
// [
// {"name":"Taro", "age": 20},
// {"name":"Jiro", "age": 18},
// {"name":"Hanako", "age": 22}
// ]
json_lookup($jsonStr, "$[0].name") # Taro
json_lookup($jsonStr, "$[1].age") # 18
json_lookup($jsonStr, "$[2]") # {"name":"Hanako", "age": 22}
日付関数
today: 本日の日付
today()
- 本日の日付を返します。
使用例
today() # 2022-01-01
year: 日付から年を取得
year(date)
- 引数に指定された日付から年を返します。
- 引数にはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
使用例
year("2022-01-02") # 2022
month: 日付から月を取得
month(date)
- 引数に指定された日付から月を返します。
- 引数にはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
使用例
month("2022-01-02") # 1
day: 日付から日を取得
day(date)
- 引数に指定された日付から日を返します。
- 引数にはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
使用例
day("2022-01-02") # 2
weekday: 日付から曜日番号を取得
weekday(date)
- 引数に指定された日付から曜日の番号を返します。
- 引数にはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
- 曜日の番号は 1: 日曜日 〜 7: 土曜日 となります。
使用例
weekday("2022-01-02") # 1
datedif: 日付の差分日数を取得
datedif(from, to, unit)
- fromとtoの日付の間の日数・月数・年数を返します。
- fromとtoにはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
- unitの指定には「
D
: 日数」「M
: 月数」「Y
: 年数」を許容します。 - toにはfrom以降の日付を指定してください。fromより前の日付の指定には対応していません。
使用例
datedif("2022-01-01", "2022-01-31", "D") # 30
datedif("2022-01-01", "2022-04-01", "M") # 3
datedif("2022-01-01", "2023-01-01", "Y") # 1
dateadd: 起算日から指定した日数前後の日付を取得
dateadd(date, num)
- dateに指定された日付から起算して、numに指定した日数だけ前または後の日付を返します。
- dateにはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
- 1900年1月1日〜9999年12月31日の範囲の日付に対応しています。
使用例
dateadd("2024-01-01", 1) # 2024-01-02
dateadd("2024-01-01", -1) # 2023-12-31
edate: 起算日から指定した月数前後の日付を取得
edate(date, num)
- dateに指定された日付から起算して、numに指定した月数だけ前または後の日付を返します。
- dateにはISO8601形式の日付のみ(YYYY-MM-DD)を入力してください。
- 1900年1月1日〜9999年12月31日の範囲の日付に対応しています。
使用例
edate("2024-01-01", 1) # 2024-02-01
edate("2024-01-01", -1) # 2023-12-01