# 変数の値を設定ノードで計算式を使用する

[**変数の値を設定ノード**](https://docs.allganize.ai/alli-userguide/skills/skill-editor/node/assign-value-node)で変数の値に計算式を指定することができます。 簡単な数式だけでなく、様々な関数も利用することができます。

この機能を使用するには、まず、[**変数の値を設定ノード**](https://docs.allganize.ai/alli-userguide/skills/skill-editor/node/assign-value-node)を作成します。「変数を追加」をクリックし、対象の変数を指定して「数式」の形式を選択します。「割り当てられる数式」フィールドに計算式を入力します。 –

<figure><img src="https://i0.wp.com/guide.allganize.ai/wp-content/uploads/2022/07/image-6.png?resize=574%2C423&#x26;ssl=1" alt=""><figcaption></figcaption></figure>

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

## 基本的な計算 <a href="#basic-calculations" id="basic-calculations"></a>

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

## 関数 <a href="#basic-functions" id="basic-functions"></a>

すべての関数は、*関数名（）*&#x306E;形式で使用します。 例えば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, round**: 切り上げ、切り下げ、または切り上げ値を返します。\
  例: floor(2.1) = 2
* **random, random\_int**: raandom（）は、0から1までの乱数値を返します。 random\_int（min、max）は、最小値と最大値の間のランダムな整数値を返します。\
  例: random\_int(-1, 2) = -1, 0, 1, or 2
* **unix\_timestamp**: unix時間を返します。\
  例: unix\_timestamp() = 1601672447

## アドバンスド関数 <a href="#advanced-functions" id="advanced-functions"></a>

以下の関数は、JSONまたは文字列リスト型の変数を編集するために使用されます。 関数に入る値はすべて同じ形式の変数に置き換えられます。 関数で文字列値を使用する場合は、引用符を使用することを忘れないでください。（例:’Allganize’）

### dict <a href="#dict" id="dict"></a>

* **形式**: 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 <a href="#dict_set" id="dict_set"></a>

* **形式**: 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 <a href="#dict_del" id="dict_del"></a>

* **形式**: 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 <a href="#dict_update" id="dict_update"></a>

* **形式**: 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’}

### json\_loads <a href="#json_loads" id="json_loads"></a>

* **形式**: json\_loads(‘JSON\_form’)
* JSON形式をJSON変数として保存します。
* **変数のタイプ** : JSON
* **例**: json\_loads(‘{“Name”:”Alli”, “Email”:”<test@allganize.ai>”}’)

### json\_dumps <a href="#json_dumps" id="json_dumps"></a>

* **形式**: json\_dumps(@JSON\_variable)
* JSON変数の値を文字列に変換します。
* **変数のタイプ**: 文字列
* **例**: json\_dumps(@JSON\_VAR)

### list <a href="#list" id="list"></a>

* **形式**: list(string1, string2, …)
* 文字列を使用して文字列リスト型の変数を作成します。
* **変数のタイプ**:文字列リスト
* **例**: list(‘Allganize’, ‘Test’) = \[‘Allganize’, ‘Test’]

### list\_append <a href="#list_append" id="list_append"></a>

* **形式**: list\_append(@string\_list\_variable, string1, string2, …)
* 文字列リストに任意の文字列に追加します。
* **変数のタイプ**:文字列リスト
* **例**: @STR\_LIST が 値として\[‘Allganize’, ‘Test’]を持ち、’Alli’という文字列を追加する場合、下記となります。list\_append(@STR\_LIST,”Alli”) = \[‘Allganize’, ‘Test’, ‘Alli’]

### list\_reverse <a href="#list_reverse" id="list_reverse"></a>

* **形式**: list\_reverse(@string\_list\_variable)
* リストの要素の並び順を逆にします。
* **変数のタイプ**:文字列リスト
* **例**: When @STR\_LIST has \[‘Allganize’, ‘Test’] as the variable value, list\_reverse(@STR\_LIST) = \[‘Test’, ‘Allganize’]

### get\_by\_json\_path <a href="#get_by_json_path" id="get_by_json_path"></a>

* **形式**: 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>’

### storage\_set / storage\_get <a href="#storage_set-storage_get" id="storage_set-storage_get"></a>

* **形式**: storage\_set(‘key’, @variable) / storage\_get(‘key’)
* storage\_setは、変数値をプロジェクトレベルのキーに保存します。 キーは任意のテキストにすることができます。 保存された値は、storge\_getを使用して取得できます。 値を割り当てる変数は、保存された変数と同じタイプである限り、任意のタイプにすることができます。
* **変数のタイプ**：保存された変数と同じタイプ
* **例**: 文字列の変数の値がstorage\_set（ ‘string’,@string\_variable）を使用して保存されている場合、storage\_get（ ‘string’）を使用してプロジェクト内のスキルまたは顧客の値を取得し、それを文字列変数に割り当てることができます。

### contains <a href="#contains" id="contains"></a>

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

### append <a href="#append" id="append"></a>

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

### unique <a href="#unique" id="unique"></a>

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

### urlencode <a href="#urlencode" id="urlencode"></a>

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

### urldecode <a href="#urldecode" id="urldecode"></a>

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

### regex\_sub, regex\_isub <a href="#regex_sub-regex_isub" id="regex_sub-regex_isub"></a>

* **形式**: 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 <a href="#date_format" id="date_format"></a>

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

### to\_date <a href="#to_date" id="to_date"></a>

* **形式**: to\_date(date\_format, YMD\_form(optional))
* 日付を日付形式に変換します。 変換元の日付のフォーマットは下記となります。 YYYYMMDD, YYYY/MM/DD, YYYY-MM-DD, YYYY MM DD, YYYY M D YYYY-M-D, YYYY/M/D, YYMMDD, YY/M/D, YY-M-DD, YY M DD
* オプションのYMDフォームにMDYを入力して、入力した日付形式で年/月/日の順序を変更できます。 たとえば、MMDDYY、MM / DD / YYYYなどを使用できます。 下記の例2を参照してください。
* 0から始まる日付形式は入力できません。
* **変数のタイプ**：文字列または日付形式
* **例1** : String型か数値である@DATEが’20210602’を値として持っており、日付のフォーマットを揃えたい場合、下記となります。 to\_date(@DATE) = ‘2021-06-02’.
* **例2** :String型か数値である@DATEが’060221’を値として持っており、日付のフォーマットを揃えたい場合、下記となります。 to\_date(@DATE, “MDY”) = ‘2021-06-02’.

### date\_add <a href="#date_add" id="date_add"></a>

* **形式**: date\_add(date, number)
* 日付に日数を追加します。
* **変数のタイプ**: 日付
* **例**: Data型かString型の@DATE が’2020-01-11’を値として持ち、2日分日付を進めたい場合、下記となります。 date\_add(@DATE, 2) = ‘2020-01-13’

### today <a href="#today" id="today"></a>

* **形式**: today()
* 本日の日付を返します。
* **変数のタイプ**: 日付、または、文字列
* **例**:本日の日付が2021年4月15日の場合、下記となります。 today() = ‘2021-04-15’

### first\_day\_of\_month <a href="#first_day_of_month" id="first_day_of_month"></a>

* **形式**: first\_day\_of\_month()
* 今月の最初の日付を返します。
* **変数のタイプ**: 日付、または、文字列
* **例**: 本日の日付が2021年4月15日の場合、下記となります first\_day\_of\_month() = ‘2021-04-01’

### last\_day\_of\_month <a href="#last_day_of_month" id="last_day_of_month"></a>

* **形式**: last\_day\_of\_month()
* 今月の最後の日付を返します。
* **変数のタイプ**: 日付、または、文字列
* **例**: 本日の日付が2021年4月15日の場合、下記となります。 last\_day\_of\_month() = ‘2021-04-30’

### find\_all, find\_iall <a href="#find_all-find_iall" id="find_all-find_iall"></a>

* **形式**: 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 <a href="#substr" id="substr"></a>

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