式内関数リファレンス
ワークフローの式内で使える関数について記載します。
array
fill
arrayのすべて要素をvalueに入れ替えます。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
list[]
arrayのすべての要素をvalueに置き換えたリストを返します。
例
steps:
fill:
return: ${array.fill([1, 2, 3], 0)}
# return [0, 0, 0]
range
引数の条件に合った連番のリストを返します。
引数 |
説明 |
---|---|
|
|
|
|
|
|
戻り値
list[]
引数の条件に合った連番のリストを返します。
例えば、array.range(5)は0から4までの整数のリストを生成します。
例
steps:
range:
return: ${array.range(0, 10)}
# return [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
push
arrayの末尾にvalueを追加します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
list[]
arrayの末尾にvalueを追加したリストを返します。
例
steps:
push:
return: ${array.push([1, 2, 3], 4)}
# return [1, 2, 3, 4]
set
arrayの要素indexにvalueを追加します。
引数 |
説明 |
---|---|
|
|
|
|
|
|
戻り値
list[]
arrayの要素indexにvalueを追加したリストを返します。
例
steps:
step:
return: ${array.set([1, 2, 3], 1, 1)}
# return [1, 1, 3]
json
decode
UTF-8エンコードされたバイト列と文字列をobjectに変換します。
引数 |
説明 |
---|---|
|
|
戻り値
object
デコードされたobject
例
steps:
set:
assign:
stringData: '{"name":"watashi","age":20,"address":"東京都港区"}'
encode:
return: ${json.decode(stringData)}
# return {name: "watashi", age: 20, address: "東京都港区"}
encode
objectを文字列に変換します。
引数 |
説明 |
---|---|
|
|
戻り値
string
エンコードされた文字列
例
steps:
set:
assign:
jsonData: {name: "watashi", age: 20, address: "東京都港区"}
encode:
return: ${json.encode(jsonData)}
# return "{\"name\":\"watashi\",\"age\":20,\"address\":\"東京都港区\"}"
list
concat
arrayの末尾にvalueを追加します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
list[]
arrayの末尾にvalueを追加したリストを返します。
例
steps:
concat:
return: ${list.concat([1, 2, 3], 4)}
# return [1, 2, 3, 4]
prepend
arrayの先頭にvalueを追加します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
list[]
arrayの先頭にvalueを追加したリストを返します。
例
steps:
prepend:
return: ${list.prepend([1, 2, 3], 0)}
# return [0, 1, 2, 3]
map
delete
mapから指定したkeyの項目を削除します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
Map<string, any>
指定したkeyの項目を削除したmapを返します。
例
steps:
set:
assign:
target: {"key1": "hello", "key2": "world", "key3": "!"}
delete:
return: ${map.delete(target, 'key3')}
#return {"key1": "hello", "key2": "hello"}
get
mapから指定したkeyの項目を取得します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
any
mapから指定したkeyの項目を返します。
mapに指定したkeyが存在しない場合はnullを返します。
例
default:
set:
assign:
target: {"key1": "hello", "key2": "world", "key3": "!"}
get:
return:: ${map.get(target, 'key2')}
# return "world"
merge
map1にmap2の項目を追加します。keyが重複する場合はmap2の項目に置き換えます。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
Map<string, any>
結合したmapを返します。
例
steps:
set:
assign:
target1: {"key1": "hello", "key2": "world", "key3": "!"}
target2: {"key2": "hello", "key5": "world"}
merge:
return: map.merge(target1, target2)}
# return {"key1": "hello", "key2": "hello", "key3": "!", "key5": "world"}
mergeNested
2つのマップ(辞書)を受け取り、最初のマップのコピーを作成し、2番目のマップからアイテムをそのコピーに再帰的に追加します。
同じキーを持つマップの場合、最初のマップの値は2番目のマップの値で置き換えられます。
例えば、もし map1 = {key1: value1}
と map2 = {key1: value2}
があると、map.mergeNested(map1, map2)
は {key1: value2}
を返します。
ネストされたマップについても、値は再帰的にマージされます。
例えば、map1 = {key1: {keyx: valuex}}
と map2 = {key1: {keyy: valuey}}
があると、map.mergeNested(map1, map2)
は {key1: {keyx: valuex, keyy: valuey}}
を返します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
Map<string, any>
結合したmapを返します。
例
steps:
set:
assign:
target1: {"key1": {"key2": "hello"}}
target2: {"key1": {"key3": "world"}}
mergeNested:
return: map.mergeNested(target1, target2)}
# return {"key1": {"key2": "hello", "key3": "world"}}
math
ceil
xの小数点切り上げを行います。
引数 |
説明 |
---|---|
|
|
戻り値
number
小数点を切り上げた数値を返します。
例
steps:
ceil:
return: ${math.ceil(1.1)}
# return 2
randint
xからyまでの数値がランダム出力を行います。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
number
xからyまでのランダムな数値を返します。
例
steps:
randint:
return: ${math.randint(1, 10)}
# return 1~10のランダムな数値
sqrt
ルートxの出力を行います。
引数 |
説明 |
---|---|
|
|
戻り値
number
√xの値を返します。
例
steps:
sqrt:
return: ${math.sqrt(2)}
# return 1.4142135623730951
abs
xの絶対値を出力を行います。
引数 |
説明 |
---|---|
|
|
戻り値
number
xの絶対値を返します。
例
steps:
abs:
return: ${math.abs(-2)}
# return 2
max
xとyを比較して大きい方を出力を行います。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
number
xとyを比較して大きい数値を返します。
例
steps:
max:
return: ${math.max(2, -2)}
# return 2
min
xとyを比較して小さい方を出力を行います。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
number
xとyを比較して小さい数値を返します。
例
steps:
min:
return: ${math.min(2, -2)}
# return -2
test
count
テストの実行回数や特定の条件が満たされた回数をカウントするために使用します。
例
steps:
loop:
for:
in: '${array.range(10)}'
as: i
steps:
add:
assign:
_: ${test.count()}
countResult:
return: ${test.count()}
# return 10
resetCount
テストの実行回数や特定の条件が満たされた回数をリセットするために使用します。
例
steps:
loop:
for:
in: '${array.range(10)}'
as: i
steps:
add:
assign:
_: ${test.count()}
resetResult:
return: ${test.resetCount()}
# return 0
text
decode
指定された文字セットを使用して、与えられたデータを文字列にデコードします。
指定された文字セットで正しくデコードできない各バイトは、出力で uFFFD コードポイント(「�」)として表現されます。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
string
デコードされた文字列。
例
steps:
set:
assign:
sample: ${"Hello World"}
decode:
return: ${text.decode(text.encode(sample, "utf-8"))}
# return "Hello World"
encode
指定された文字セットを使用して、与えられたテキストをバイト列にエンコードします。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
bytes
エンコードされたバイト列。
例
steps:
set:
assign:
sample: ${"Hello World"}
encode:
return: ${text.encode(sample, "utf-8")}
# return [72,101,108,108,111,32,87,111,114,108,100]
findAll
文字列内で指定した部分文字列が出現するすべてのインデックスを検索します。
文字列はコードポイントを基準にインデックス付けされ、ゼロから始まるインデックスが使われます。検索は左から右に進み、重複するマッチは検索されません。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
array
部分文字列が見つかったインデックスのソートされたリスト。マッチが見つからなかった場合は、空のリストが返されます。
例
steps:
set:
assign:
sample: ${"Hello World"}
findAll:
return: ${text.findAll(sample, "l")}
# return [2, 3, 9]
findAllRegex
文字列内で正規表現に一致するすべての部分を検索します。
一致するすべての部分がリストとして返されます。各一致は、マッチした部分文字列の開始インデックス(ゼロベース)と部分文字列自体を含むマップです。重複する一致がある場合、左端の一致のみが考慮されます。重複する一致が同じインデックスで始まる場合は、最長の一致が考慮されます。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
array
一致した部分文字列のリストを含むマップのリスト。各マップは、キー index
(部分文字列の開始インデックス)と match
(一致した部分文字列)を持ちます。リストはインデックス順にソートされます。一致が見つからなかった場合は、空のリストが返されます。
例
set:
assign:
sample: ${"Hello World"}
findAllRegex:
return: ${text.findAllRegex(sample, "o|l")}
# return [{"index": 2, "match": "l"}, {"index": 3, "match": "l"}, {"index": 4, "match": "o"}, {"index": 7, "match": "o"}, {"index": 9, "match": "l"}]
matchRegex
文字列が正規表現に一致する部分があるかどうかをtrueまたは、falseで返します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
boolean
source
が regexp
一致する部分がある場合は true
、それでない場合は false
を返します
例
set:steps:
set:
assign:
sample: ${"Hello World"}
matchRegex:
return: ${text.matchRegex(sample, "Help|World")}
# return true
replaceAll
文字列内で指定した部分文字列のすべてのインスタンスを新しい文字列に置き換えます。
引数 |
説明 |
---|---|
|
|
|
|
|
|
戻り値
string
source内のsubstrすべてをrepl に置き換えた文字列を返す。
例
steps:
set:
assign:
sample: ${"Hello World"}
replaceAll:
return: ${text.replaceAll(sample, "Hello", "The")}
# return "The World"
replaceAllRegex
文字列内で指定した正規表現ののすべてのインスタンスを新しい文字列に置き換えます。
引数 |
説明 |
---|---|
|
|
|
|
|
|
戻り値
string
source内のregexpすべてをrepl に置き換えた文字列を返す。
例
steps:
set:
assign:
sample: ${"Hello World"}
replaceAllRegex:
return: ${text.replaceAllRegex(sample, "Hello|World", "The")}
# return "The The"
split
指定された区切り文字で文字列をリストに分割します。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
list[]
sourceを指定したseparatorを使って文字列をリストに分割して返す。
例
steps:
split:
return: ${text.split("abc", "a")}
# return ["", "bc"]
substring
ソース文字列から指定された開始インデックスと終了インデックスの間の部分文字列を抽出します。
引数 |
説明 |
---|---|
|
|
|
|
|
|
戻り値
string
sourceから指定されたstartとendの間の部分文字列を返す。
例
steps:
substring:
return: ${text.substring("Hello World", 0, 5)}
# return "Hello"
toLower
指定した文字列をすべて小文字に変換します。
引数 |
説明 |
---|---|
|
|
戻り値
string
sourceをすべて小文字にして返す。
例
steps:
toLower:
return: ${text.toLower("Hello World")}
# return "hello world"
toUpper
指定した文字列をすべて大文字に変換します。
引数 |
説明 |
---|---|
|
|
戻り値
string
sourceをすべて大文字にして返す。
例
steps:
toUpper:
return: ${text.toUpper("Hello World")}
# return "HELLO WORLD"
urlDecode
指定されたURLエンコードされた文字列をデコードします。
+
をスペースに変換し、URLエンコードされた文字(%xx)を対応するUTF-8文字に変換します。
引数 |
説明 |
---|---|
|
|
戻り値
string
URL内のプラスをスペースに変換した、エスケープされていない source
を返す。
例
steps:
urlDecode:
return: ${urlDecode("a%2Fb%2Fc%3Fitem%3Dd%2Be%20f")}
# return "a/b/c?item=d+e f"
urlEncode
指定された文字列をURLエンコードします。
引数 |
説明 |
---|---|
|
|
戻り値
string
source
のパーセントエンコードされた文字列を返す。
例
steps:
urlEncode:
return: ${text.urlEncode("a/b/c?item=d+e f")}
# return "a%2Fb%2Fc%3Fitem%3Dd%2Be%20f"
urlEncodePlus
指定された文字列をURLエンコードします。スペースは + に変換されます。
引数 |
説明 |
---|---|
|
|
戻り値
string
空白をプラスに変換して、パーセントエンコードされた source
を返す。
例
steps:
urlEncodePlus:
return: ${text.urlEncodePlus("a/b/c?item=d+e f")}
# return "a%2Fb%2Fc%3Fitem%3Dd%2Be+f"
time
format
特定のタイムスタンプを指定したタイムゾーンでフォーマットします。
引数 |
説明 |
---|---|
|
|
|
|
戻り値
string
ISO 8601形式のtimezoneで、マイクロ秒の精度までのタイムスタンプを返します。
例えば、 「2024-01-10T16:15:54.615087Z」を返します。
例
steps:
format:
return: ${time.format(1734425022, "JST")}
# return "2024-12-17T17:43:42.000+09:00"
parse
RFC 3339互換の文字列をタイムスタンプに変換します。
引数 |
説明 |
---|---|
|
|
戻り値
number
Epoch(1970年1月1日00:00:00 UTC)からの経過秒数を浮動小数点数で表したUnix時間。
例
steps:
parse:
return: ${time.parse("2024-12-17T17:43:42.300+09:00")}
# return 1734425022.3
now
Unixの時間を浮動小数点数で返します。
戻り値
number
Epoch(1970年1月1日00:00:00 UTC)からの経過秒数を浮動小数点数で表したUnix時間を返します。
例
steps:
now:
return: ${time.now()}
# return 1734425022.315
uuid
v7
ランダムな汎用一意識別子 (UUID) を返します。
戻り値
string
128ビットのUUIDをランダムに生成し、文字列形式で返します。
例
step:
call: debug.log
args:
message: ${uuid.v7()}
# return 550e8400-e29b-41d4-a716-446655440000
nil
全てのビットが0の128ビットのUUIDを返します。
戻り値
string
128ビットのUUIDを生成し、文字列形式で返します。
例
step:
call: debug.log
args:
message: ${uuid.nil()}
# return 00000000-0000-0000-0000-000000000000