式内関数リファレンス

ワークフローの式内で使える関数について記載します。

array

fill

arrayのすべて要素をvalueに入れ替えます。

引数

説明

array

list[]

value

any

戻り値

list[]

arrayのすべての要素をvalueに置き換えたリストを返します。

steps:
  fill:
    return: ${array.fill([1, 2, 3], 0)}
    # return [0, 0, 0]

range

引数の条件に合った連番のリストを返します。

引数

説明

start?

number

stop

number

step?

number

戻り値

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を追加します。

引数

説明

array

list[]

value

any

戻り値

list[]

arrayの末尾にvalueを追加したリストを返します。

steps:
  push:
    return: ${array.push([1, 2, 3], 4)}
    # return [1, 2, 3, 4]

set

arrayの要素indexにvalueを追加します。

引数

説明

array

list[]

index

number

value

any

戻り値

list[]

arrayの要素indexにvalueを追加したリストを返します。

steps:
  step:
    return: ${array.set([1, 2, 3], 1, 1)}
    # return [1, 1, 3]

json

decode

UTF-8エンコードされたバイト列と文字列をobjectに変換します。

引数

説明

data

string
デコードされる入力データ

戻り値

object

デコードされたobject

steps:
  set:
    assign:
      stringData: '{"name":"watashi","age":20,"address":"東京都港区"}'
  encode:
    return: ${json.decode(stringData)}
    # return {name: "watashi", age: 20, address: "東京都港区"}

encode

objectを文字列に変換します。

引数

説明

data

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を追加します。

引数

説明

array

list[] 元リスト。このリストは変更されないことに注意してください。

value

any 最後に連結される要素。

戻り値

list[]

arrayの末尾にvalueを追加したリストを返します。

steps:
  concat:
    return: ${list.concat([1, 2, 3], 4)}
    # return [1, 2, 3, 4]

prepend

arrayの先頭にvalueを追加します。

引数

説明

array

list[] 元リスト。このリストは変更されないことに注意してください。

value

any 最初に追加される要素。

戻り値

list[]

arrayの先頭にvalueを追加したリストを返します。

steps:
  prepend:
    return: ${list.prepend([1, 2, 3], 0)}
    # return [0, 1, 2, 3]

map

delete

mapから指定したkeyの項目を削除します。

引数

説明

map

Map<string, any> 削除対象のマップ。

key

string マップから削除するために指定されたキーを表す文字列。

戻り値

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の項目を取得します。

引数

説明

map

Map<string, any> 検索を行うマップ。

key

string
検索に使用される文字列または文字列のリスト。リストが使用される場合、関数はキーのリストを使って繰り返し呼び出されます。

戻り値

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の項目に置き換えます。

引数

説明

map1

Map<string, any> 結合されるマップ。

map2

Map<string, any> 結合するマップ。

戻り値

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}} を返します。

引数

説明

map1

Map<string, any> 結合されるマップ。

map2

Map<string, any> 結合するマップ。

戻り値

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の小数点切り上げを行います。

引数

説明

x

number

戻り値

number

小数点を切り上げた数値を返します。

steps:
  ceil:
    return: ${math.ceil(1.1)}
    # return 2

randint

xからyまでの数値がランダム出力を行います。

引数

説明

x

number

y

number

戻り値

number

xからyまでのランダムな数値を返します。

steps:
  randint:
    return: ${math.randint(1, 10)}
    # return 1~10のランダムな数値

sqrt

ルートxの出力を行います。

引数

説明

x

number

戻り値

number

√xの値を返します。

steps:
  sqrt:
    return: ${math.sqrt(2)}
    # return 1.4142135623730951

abs

xの絶対値を出力を行います。

引数

説明

x

number

戻り値

number

xの絶対値を返します。

steps:
  abs:
    return: ${math.abs(-2)}
    # return 2

max

xとyを比較して大きい方を出力を行います。

引数

説明

x

number

y

number

戻り値

number

xとyを比較して大きい数値を返します。

steps:
  max:
    return: ${math.max(2, -2)}
    # return 2

min

xとyを比較して小さい方を出力を行います。

引数

説明

x

number

y

number

戻り値

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 コードポイント(「�」)として表現されます。

引数

説明

data

bytes デコードする入力データ(バイト列)。

charset

string
デコードに使用する文字セット。 例えば、UTF-8、US-ASCII、ISO-8859-2 など。大文字と小文字を区別しません。デフォルトは UTF-8。

戻り値

string

デコードされた文字列。

steps:
  set:
    assign:
      sample: ${"Hello World"}
  decode:
    return: ${text.decode(text.encode(sample, "utf-8"))}
    # return "Hello World"

encode

指定された文字セットを使用して、与えられたテキストをバイト列にエンコードします。

引数

説明

text

string エンコードする入力テキスト。

charset

string
エンコードに使用する文字セット。 例えば、UTF-8、US-ASCII、ISO-8859-2 など。大文字と小文字を区別しません。デフォルトは UTF-8。

戻り値

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

文字列内で指定した部分文字列が出現するすべてのインデックスを検索します。
文字列はコードポイントを基準にインデックス付けされ、ゼロから始まるインデックスが使われます。検索は左から右に進み、重複するマッチは検索されません。

引数

説明

source

string 検索対象の文字列。

substr

string 検索する部分文字列。

戻り値

array

部分文字列が見つかったインデックスのソートされたリスト。マッチが見つからなかった場合は、空のリストが返されます。

steps:
  set:
    assign:
      sample: ${"Hello World"}
  findAll:
    return: ${text.findAll(sample, "l")}
    # return [2, 3, 9]

findAllRegex

文字列内で正規表現に一致するすべての部分を検索します。
一致するすべての部分がリストとして返されます。各一致は、マッチした部分文字列の開始インデックス(ゼロベース)と部分文字列自体を含むマップです。重複する一致がある場合、左端の一致のみが考慮されます。重複する一致が同じインデックスで始まる場合は、最長の一致が考慮されます。

引数

説明

source

string 検索対象の文字列。

regex

string 使用する正規表現。 RE2構文 を使用します。

戻り値

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で返します。

引数

説明

source

string 検索対象の文字列。

regex

string 使用する正規表現。 RE2構文 を使用します。

戻り値

boolean

sourceregexp 一致する部分がある場合は true 、それでない場合は false を返します

set:steps:
  set:
    assign:
      sample: ${"Hello World"}
  matchRegex:
    return: ${text.matchRegex(sample, "Help|World")}
    # return true

replaceAll

文字列内で指定した部分文字列のすべてのインスタンスを新しい文字列に置き換えます。

引数

説明

source

string 置き換えを行う元の文字列。

substr

string 置き換え対象となる部分文字列。

repl

string 置き換え後の文字列。

戻り値

string

source内のsubstrすべてをrepl に置き換えた文字列を返す。

steps:
  set:
    assign:
      sample: ${"Hello World"}
  replaceAll:
    return: ${text.replaceAll(sample, "Hello", "The")}
    # return "The World"

replaceAllRegex

文字列内で指定した正規表現ののすべてのインスタンスを新しい文字列に置き換えます。

引数

説明

source

string 置き換えを行う元の文字列。

regex

string 置き換え対象となる正規表現。

repl

string 置き換え後の文字列。

戻り値

string

source内のregexpすべてをrepl に置き換えた文字列を返す。

steps:
  set:
    assign:
      sample: ${"Hello World"}
  replaceAllRegex:
    return: ${text.replaceAllRegex(sample, "Hello|World", "The")}
    # return "The The"

split

指定された区切り文字で文字列をリストに分割します。

引数

説明

source

string 分割する文字列。

separator

string 区切り文字。

戻り値

list[]

sourceを指定したseparatorを使って文字列をリストに分割して返す。

steps:
  split:
    return: ${text.split("abc", "a")}
    # return ["", "bc"]

substring

ソース文字列から指定された開始インデックスと終了インデックスの間の部分文字列を抽出します。

引数

説明

source

string 部分文字列を抽出する元の文字列。

start

number 部分文字列の開始インデックス。

end

number 部分文字列の終了インデックス。

戻り値

string

sourceから指定されたstartとendの間の部分文字列を返す。

steps:
  substring:
    return: ${text.substring("Hello World", 0, 5)}
    # return "Hello"

toLower

指定した文字列をすべて小文字に変換します。

引数

説明

source

string 変換する文字列。

戻り値

string

sourceをすべて小文字にして返す。

steps:
  toLower:
    return: ${text.toLower("Hello World")}
    # return "hello world"

toUpper

指定した文字列をすべて大文字に変換します。

引数

説明

source

string 変換する文字列。

戻り値

string

sourceをすべて大文字にして返す。

steps:
  toUpper:
    return: ${text.toUpper("Hello World")}
    # return "HELLO WORLD"

urlDecode

指定されたURLエンコードされた文字列をデコードします。
+ をスペースに変換し、URLエンコードされた文字(%xx)を対応するUTF-8文字に変換します。

引数

説明

source

string URLエンコードされた文字列。

戻り値

string

URL内のプラスをスペースに変換した、エスケープされていない source を返す。

steps:
  urlDecode:
    return: ${urlDecode("a%2Fb%2Fc%3Fitem%3Dd%2Be%20f")}
    # return "a/b/c?item=d+e f"

urlEncode

指定された文字列をURLエンコードします。

引数

説明

source

string 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エンコードします。スペースは + に変換されます。

引数

説明

source

string 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

特定のタイムスタンプを指定したタイムゾーンでフォーマットします。

引数

説明

seconds

number Epoch(1970年1月1日00:00:00 UTC )からの経過秒数のタイムスタンプ

timezone

string
tzデータベースからのタイムゾーン名 。 指定されていない場合や空の文字列の場合、デフォルトは UTC です。

戻り値

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互換の文字列をタイムスタンプに変換します。

引数

説明

value

string
RFC 3339のセクション5.6で定義されたISO 8601のサブセットに従ってフォーマットされた文字列で、最大マイクロ秒単位の精度を持つ。

戻り値

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