フォーミュラ
フォーミュラは GetMyBot に組み込まれた計算言語です。割引額の計算、文字列の組み立て、条件の確認、リストや日付の変換など — メッセージテキスト内、**「計算」**アクション内、意思決定テーブルの条件内で直接実行できます。構文はスプレッドシートのフォーミュラに近く、ロシア語の関数名エイリアスをサポートしています。
フォーミュラが使える場所
- テキスト内 —
{{= 式}}構文で式を評価して結果を挿入します。例:{{= ROUND(param.total * 0.9) }}。 - 「計算」アクション(
compute)— 式を評価して結果をctx(「ctx に保存」フィールド)や購読者パラメータ(「パラメータに保存」フィールド)に保存します。 - 意思決定テーブル — 「計算」アクションでは1つの式の代わりに「条件 → 結果」のルールリストを設定できます。条件が真になった最初のルールの値が返され、一致がなければデフォルト値が返されます。
構文
- 演算子: 算術
+ - * / %、比較== != < > <= >=、論理&& || !、括弧( )。 - リテラル: 数値(
42、3.14)、文字列(引用符付き"hello")、論理値(true、false)。 - データ参照: 式内でパラメータやコンテキスト値を名前で参照できます —
param.total、ctx.items、recipient.email。 - 関数呼び出し:
名前(引数1, 引数2)。名前は大文字小文字を区別しないため、ロシア語エイリアスも使用できます。
関数
名前は正規(英語)形式で記載されています。各関数はロシア語エイリアスでも呼び出せます(大文字小文字不問)。
数学
SUM、AVERAGE、MAX、MIN、MOD、POW、SQRT、PI、ROUND、CEIL、FLOOR、TRUNC、ABS、RANDBETWEEN。
テキスト
LEN、LEFT、RIGHT、MID、LOWER、UPPER、UPPERFIRST、REPEAT、CONCAT、SUBSTITUTE、FIND、SEARCH、FIELD、TRIM、LTRIM、RTRIM、PADLEFT、PADRIGHT、SPLIT、JOIN、STARTSWITH、ENDSWITH、CONTAINS、NL。
論理
IF、AND、OR、NOT、EMPTY、ISNUMBER、COALESCE。
リスト
SORT、RSORT、UNIQUE、FILTER、FOREACH、REDUCE、INDEX、SLICE、COUNTA、COUNTUNIQUE、ARRAYADD、ARRAYREMOVE、ARRAYREPLACE、ARRAYFIND。
日付と時刻
TODAY、NOW、DATEADD、DATESUB、DATEDIF、DATEFORMAT、DATEVALUE、WEEKDAY。
JSON
TOJSON、FROMJSON、JSONPATH、JP、JSONOBJECT、JSONARRAY、KEYS、VALUES。
暗号化とエンコード
HASH、TOBASE64、FROMBASE64、FROMJWT、FROMJWK。
パラメータ
PARAMID、PARAMREPLACE、PARAMREMOVE。
例
- 合計から10%割引:
{{= ROUND(param.total * 0.9) }}。 - 条件:
{{= IF(param.total > 1000, "卸売", "小売") }}。 - 文字列の組み立て:
{{= CONCAT("注文番号", ctx.order_id) }}。 - リストのサイズ:
{{= COUNTA(ctx.items) }}。
フォーミュラのテスト
**「計算」**アクションのエディターにはテストボタンがあります: 式とサンプルデータを入力すると、プラットフォームが結果を返して構文エラーをハイライト表示します — コンストラクターを離れることなく確認できます。保存前に長いフォーミュラをデバッグするのに便利です。
次のステップ
- 変数置換とフォーミュラ —
{{...}}変数、ctxコンテキスト、パラメータ。 - アクション — 「計算」アクションと意思決定テーブル。
- メッセージとボタン — テキストとボタンテンプレートでのフォーミュラ。
- コレクションとデータ — フォーミュラが処理するデータ。