変数の値を設定ノードで変数の値に計算式を指定することができます。簡単な数式だけでなく、様々な関数も利用することができます。

この機能を使用するには、まず、変数の値を設定ノードを作成します。「変数を追加」をクリックし、対象の変数を指定して「数式」の形式を選択します。「割り当てられる数式」フィールドに計算式を入力します。

上記の例の様に、数式に変数を含めることもできます。
使用できる演算と関数は以下の通りです。

基本的な計算

  • +, -, *, /, ( )
  • % (係数)
    例: 100%2 = 0, 100%8 = 4.
  • ** (乗数)
    例: 100**2 = 10,000.

関数

すべての関数は、関数名()の形式で使用します。例えばabs(-5)などです。

  • to_number: 値を数値形式に変換します。
    例: to_number('4') = 4
  • to_string: 値を文字列形式に変換します。
    例: to_string(7) = '7'
  • to_boolean: 値をブール形式に変換します。
    例: to_boolean(1) = True
  • length: 値の長さを返します。
    例: length('abcde') = 5
  • abs: 値の絶対値を返します。
    例: abs(-5) = 5
  • sin, cos, tan: sin、cos、tanの値を返します。
    例: tan(90) = 1
  • ceil, floor: 切り上げまたは切り捨てた値を返します。
    例: floor(2.1) = 2
  • random, random_int: raandom()は、0から1までの乱数値を返します。random_int(min、max)は、最小値と最大値の間のランダムな整数値を返します。
    例: random_int(-1, 2) = -1, 0, 1, 2の中から1つ
  • unix_timestamp: unix時間を返します。
    例: unix_timestamp() = 1601672447

アドバンスド関数

以下の関数は、JSONまたは文字列リスト型の変数を編集するために使用されます。
関数で文字列値を使用する場合は、引用符を使用することを忘れないでください。(例:'Allganize')

dict

  • 形式: dict(key1, value1, key2, value2, ...)
  • キーと値のペアを使用して、JSON型変数の構造を作成します。キーが存在する場合、関数は値を上書きします。
  • 変数のタイプ: JSON
  • 例: @NAMEが 'Allganize' という値を持ち、JSON型の変数を作成したい場合、下記となります。
    dict('Name',@NAME,'Email','test@allganize.ai') = {'Name':'Allganize','Email':'test@allganize.ai'}

dict_set

  • 形式: dict_set(@JSON_variable, key1, value1, key2, value2...)
  • キーと値をJSON変数に追加します。 キーが存在する場合、関数は値を上書きします。
  • 変数のタイプ: JSON
  • 例: @JSON_VAR が {'Name':'Allganize'} を値として持ち、@JSON_VARに'Email'をキー、'test@allganize.ai'を値として追加したい場合、下記となります。
    dict_set(@JSON_VAR,'Email','test@allganize.ai') = {'Name':'Allganize', 'Email':'test@allganize.ai'}

dict_del

  • 形式: dict_del(@JSON_variable, key)
  • JSON変数からキーを削除します。
  • 変数のタイプ: JSON
  • 例: @JSON_VAR が{'Name':'Allganize', 'Email':'test@allganize.ai'} を値として持ち、Emailのキーを削除する場合、下記となります。
    dict_del(@JSON_VAR,'Email') = {'Name':'Allganize'}

dict_update

  • 形式: dict_update(JSON_variable_1, JSON_variable_2)
  • 2つのJSON変数をマージします。 2つのJSON変数に同じキーがある場合、後者の値が優先されます。
  • 変数のタイプ: JSON
  • 例: @JSON_VAR が {'Name':'Allganize', 'Email':'test@allganize.ai'}を値として持ち、@JSON_VAR2 が {'Name':'Alli', 'Type':'AnswerBot'}を値として持ち、この2つのJSON変数をマージする場合、下記となります。
    dict_update(@JSON_VAR, @JSON_VAR2) = {'Name':'Alli', 'Email':'test@allganize.ai', 'Type':'AnswerBot'}

list_append

  • 形式: list_append(@string_list_variable, string1, string2, ...)
  • 文字列リストに任意の文字列に追加します。
  • 変数のタイプ: 文字列リスト
  • 例: @STR_LIST が 値として['Allganize', 'Test']を持ち、'Alli'という文字列を追加する場合、下記となります。
    list_append(@STR_LIST,'Alli') = ['Allganize', 'Test', 'Alli']

list_reverse

  • 形式: list_reverse(@string_list_variable)
  • リストの要素の並び順を逆にします。
  • 変数のタイプ: 文字列リスト
  • 例: @STR_LIST が値として ['Allganize', 'Test'] を持ち、要素を逆に並べたい場合、下記となります。
    list_reverse(@STR_LIST) = ['Test', 'Allganize']

get_by_json_path

  • 形式: get_by_json_path(@JSON_variable, JSON_path)
  • JSON変数からJSONパスを指定することで指定した値を返します。
  • 変数のタイプ: 文字列
  • 例: @JSON_VAR が 値として {'Name':'Allganize', 'Email':'test@allganize.ai'} を持ち、Emailの値を返す場合は下記となります。
    get_by_json_path(@JSON_VAR, '$.Email') = 'test@allganize.ai'

contains

  • 形式: contains(@string_list_variable, string)
  • 文字列リストにある文字列が含まれているがどうかを確認し、含まれているかをTrue/Falseで返します。
  • 変数のタイプ: True/False
  • 例: @STR_LIST が ['Allganize', 'Test'] を値として持ち、Allganizeという文字列がリストに含まれているかを確認する場合、下記となります。 contains(@STR_LIST, 'Allganize') = 'True'

append

  • 形式: append(@string_list_variable, string)
  • 文字列リストに文字列の要素を追加します。
  • 変数のタイプ: 文字列リスト
  • 例: @STR_LIST が ['Allganize', 'Test']を要素として持ち、リストにVariableという値を追加したい場合、下記となります。
    append(@STR_LIST, 'Variable') = ['Allganize', 'Test', 'Variable']

unique

  • 形式: unique(@string_list_variable)
  • 文字列リストから重複する値を削除します。
  • 変数のタイプ:文字列リスト
  • 例: @STR_LIST が ['Allganize', 'Test', 'Test'] を要素として持ち、重複する値を削除したい場合、下記となります。
    unique(@STR_LIST) = ['Allganize', 'Test']

urlencode

  • 形式: urlencode(@JSON_variable)
  • JSONの変数をURLにエンコードされた形式に変換します。
  • 変数のタイプ: 文字列
  • 例: @JSON_VARの中身が {'key':'hello world!'}であり、URLにエンコードしたい場合、下記となります。
    urlencode(@JSON_VAR) = 'key=hello+world%21'

regex_sub, regex_isub

  • 形式: regex_sub(regex_pattern, string1, string2) or regex_isub(regex_pattern, string1, string2)
  • ある文字列にある正規表現パターンを別の文字列に置き換えます。regex_subでは大文字と小文字が区別されますが、regex_isubでは区別されません。
  • 変数のタイプ: 文字列
  • 例: @STRの文字列の値が 'ooAoO'であり、'o'を大文字・小文字関係なく、Aに置き換えたい場合、下記となります。
    regex_isub(r'o{2}', 'A', @STR) = 'AAA'

date_format

  • 形式: date_format(regex_date_format, date)
  • 日付を正規表現の日付形式に変換します。
  • 変数のタイプ: 文字列
  • 例: Data型かString型の@DATE が'2020-01-11'を値として持ち、正規表現を用いて特定の日付形式(年-月)に変換したい場合、下記となります。
    date_format(r'%Y-%m', @DATE) = '2020-01'

find_all, find_iall

  • 形式: find_all(regex_pattern, string) or find_iall(regex_pattern, string)
  • 文字列から正規表現パターンと一致する最初の結果を見つけて結果を返します。 find_allでは大文字と小文字が区別されますが、find_iallでは区別されません。
  • 変数のタイプ: 文字列
  • 例: @STR が 'Type of the OS: Windows' を値として持ち、OS名のみを抽出したい場合、下記となります。
    find_iall(r'(windows|mac|linux)', @STR) = 'Windows'

substr

  • 形式: substr(string, number)
  • 文字列の最初の[数値]文字を返します。
  • 変数のタイプ: 文字列
  • 例: @STR が '3months' を値として持ち、2文字抽出したい場合、下記となります。
    substr(@STR, 2) = '3m'

AllganizeのAIソリューション