その他のFormula
このセクションでは、複数のデータ型で動作するFormulaについて説明します。
WorkatoのFormulaは、許可リストに登録されたRubyメソッドです。 これらのFormulaの構文と機能は、通常変更されていません。 Formulaがnull(Rubyではnilと表されます)に対して動作する場合、present?、presence、blank?を除き、ほとんどのFormulaはエラーを返し、ジョブを停止します。
RubyメソッドがWorkatoドキュメントに見つからない場合、そのメソッドは許可リストに含まれておらず、サポートされません。 許可リストへの新しいFormulaの追加をリクエストするには、Customer Success Managerにお問い合わせください。
角かっこを使用してネストされた値にアクセスする
角かっこ([])を使用すると、Workatoでハッシュ内の値にアクセスできます。 ネストされたハッシュでは、data["a"]["b"]["c"]のようにルックアップを連結できます。 ただし、チェーンのいずれかの部分が存在しない場合(たとえば、"b"がない場合)、このメソッドはNoMethodErrorを発生させます。
エラーなしでネストされた値に安全にアクセスするには、代わりに安全ナビゲーション演算子(&.)を使用します。 たとえば、data["a"]&.[]("b")&.[]("c")です。 チェーンのいずれかの部分がnilの場合、これはnilを返します。
null
null/nil値を返します。
Formulaを使用してフィールドをクリアする
入力フィールドにnullを渡しても、フィールド値はnullに更新されません。 フィールドをFormulaモードに切り替え、clear Formulaを使用してフィールド値をnullに更新します。

clear
ターゲットアプリのフィールドの値をnull/nilにクリアします。 フィールドをFormulaモードに切り替えることを忘れないでください。
ターゲットアプリのフィールドをクリアする場合は、nullではなくclear Formulaを使用します
skip
このフィールドについて宛先アプリに何も渡しません。 フィールドに既存の値がある場合、その値は変更されません。
例
この例では、更新されたSalesforceレコードを使用してMarketoのリードを更新しようとします。 SalesforceのCompanyが存在するかどうかを確認します。 存在する場合、SalesforceのCompanyをMarketoに出力します。 それ以外の場合、Marketoレコードは変更されません。
skip Formulaのユースケース例
更新データピルが空の場合、このフィールドをスキップする
更新アクションで既存の値を変更しないようにするには、skip Formulaを使用します。
uuid
UUIDを生成します。
例
| 例 | 結果 |
|---|---|
| uuid | "c52d735a-aee4-4d44-ba1e-bcfa3734f553" |
encrypt
AES-256-CBCアルゴリズムを使用し、シークレットキーで入力文字列を暗号化します。 暗号化された出力文字列はRNCryptor V3形式でパックされ、base64でエンコードされます。
Environment propertiesを使用して暗号化キーを保存する
暗号化キーをレシピにハードコードしないでください。 代わりに、Environment properties(名前にkeyまたはpasswordを含む)を使用して暗号化キーを保存します。
例
encrypt([ssn], [encryption_key])
decrypt
AES-256-CBCアルゴリズムを使用し、シークレットキーで暗号化された入力文字列を復号します。 暗号化された入力文字列はRNCryptor V3形式でパックされ、base64でエンコードされている必要があります。
Ruby decryptメソッドは、デフォルトで文字列ではなくバイト配列を返します。 Formulaに.as_string()または.as_utf8関数を追加することで、decryptメソッドの出力を文字列に変換できます。
レシピで暗号化キーをハードコードしない
暗号化キーをレシピにハードコードしないでください。 暗号化キーを保存するには、Environment properties(名前にkeyまたはpasswordを含む)を使用します。
例
decrypt([encrypted_ssn], [encryption_key])
encode_sha256
SHA256アルゴリズムを使用して文字列またはバイナリ配列をエンコードします
例
"hello".encode_sha256
encode_hex
バイナリ文字列をその16進表現に変換します
例
| 例 | 結果 |
|---|---|
"0101010101011010".encode_hex | "30313031303130313031303131303130" |
decode_hex
16進数をバイナリ文字列にデコードします
例
| 例 | 結果 |
|---|---|
"30313031303130313031303131303130".decode_hex | "0101010101011010" |
decode_url
文字列をURLデコードします。 このFormulaはURLデコードにCGI.unescapeを使用します。
例
| 例 | 結果 |
|---|---|
'https%3A%2F%2Fworkato.com%2Ffoo%3Fbar%3Dat%23anchor'.decode_url | "https://workato.com/foo?bar=at#anchor" |
'%27Stop%21%27+said+Fred"'.decode_url | "'Stop!' said Fred" |
encode_base64
Base64アルゴリズムを使用してエンコードします
例
| 例 | 結果 |
|---|---|
"Hello World!".encode_base64 | "aGVsbG8gd29ybGQh" |
decode_base64
Base64アルゴリズムを使用してデコードします
例
| 例 | 結果 |
|---|---|
"aGVsbG8gd29ybGQh".decode_base64.as_utf8 | "Hello World!" |
encode_url
文字列をURLエンコードします
例
| 例 | 結果 |
|---|---|
"Hello World".encode_url | "Hello%20World" |
encode_urlsafe_base64
Base64アルゴリズムのurlsafe変更を使用してエンコードします
例
| 例 | 結果 |
|---|---|
"Hello World".encode_urlsafe_base64 | "SGVsbG8gV29ybGQ=" |
decode_urlsafe_base64
Base64アルゴリズムのurlsafe変更を使用してデコードします
例
| 例 | 結果 |
|---|---|
"SGVsbG8gV29ybGQ".decode_urlsafe_base64 | "Hello World" |
as_string
指定されたエンコーディングでバイトシーケンスを文字列としてデコードします
例
| 例 | 結果 |
|---|---|
"SGVsbG8gV29ybGQ=".decode_base64.as_string('utf-8') | "Hello World" |
as_utf8
バイトシーケンスをUTF-8文字列としてデコードします
例
| 例 | 結果 |
|---|---|
"SGVsbG8gV29ybGQ=".decode_base64.as_utf8 | "Hello World" |
to_hex
バイナリ文字列をその16進表現に変換します
例
| 例 | 結果 |
|---|---|
"SGVsbG8gV29ybGQ=".decode_base64.to_hex | "48656c6c6f20576f726c64" |
SHA1
SHA1暗号化アルゴリズムを使用して、指定された文字列を暗号化します。 詳細については、Ruby SHA1ドキュメントを参照してください。
例
| 例 | 結果 |
|---|---|
"abcdef".sha1.encode_base64 | "H4rBDyPFtbwRZ72oS4M+XAV6d9I=" |
HMAC Formula
さまざまな署名アルゴリズムでHMAC署名を作成します
例
| 署名アルゴリズム | 例 |
|---|---|
| SHA-256 | "username:password:nonce".hmac_sha256("key") |
| SHA-1 | "username:password:nonce".hmac_sha1("key") |
| SHA-512 | "username:password:nonce".hmac_sha512("key") |
| MD5 | "username:password:nonce".hmac_md5("key") |
md5_hexdigest
文字列を受け入れ、MD5 Message-Digest Algorithmを使用してメッセージダイジェストを作成します
例
| 例 | 結果 |
|---|---|
"hello".md5_hexdigest | "5d41402abc4b2a76b9719d911017c592" |
jwt_decode
次のいずれかのアルゴリズム(RS256、RS384、RS512、HS256、HS384、HS512、ES256、ES384、またはES512)を使用してJSON web token(JWT)をデコードします。
例
| 例 | 結果 |
|---|---|
workato.jwt_decode( "eyJhbGciO...", "PEM key", 'RS256') | "{"payload" => {"sub"=>"123", "name"=>"John", ...}, "header" => {"typ"=>"JWT", "alg"=>"RS256"}}" |
workato.jwt_decode( "eyJhbGciO...", "PEM key", 'RS512') | "{"payload" => {"sub"=>"123", "name"=>"John", ...}, "header" => {"typ"=>"JWT", "alg"=>"RS512"}}" |
workato.jwt_decode( "eyJhbGciO...", "my$ecretK3y", 'HS256') | "{"payload" => {"sub"=>"123", "name"=>"John", ...}, "header" => {"typ"=>"JWT", "alg"=>"HS256"}}" |
jwt_encode
次のいずれかのアルゴリズム(RS256、RS384、RS512、HS256、HS384、HS512、ES256、ES384、またはES512)を使用してJSON web token(JWT)を作成します。 次の例のkidなど、その他の名前付きパラメータをヘッダーに追加します。
例
| 例 | 結果 |
|---|---|
workato.jwt_encode({ name: "John Doe" }, "PEM key", 'RS256') | "eyJhbGciO..." |
workato.jwt_encode({ name: "John Doe" }, "PEM key", 'RS512', kid: "24668") | "eyJ0eXAiO..." |
workato.jwt_encode({ name: "John Doe" }, "my$ecretK3y", 'HS256', kid: "24668") | "eyJ0eXAiO..." |
workato.jwt_encode({ name: "John Doe" }, "my$ecretK3y", 'HS256') | "eyJ0eXAiO..." |
workato.jwt_encode({ name: "John Doe" }, "ECDSA Key", 'ES256') | "eyJhbGciOiJ..." |
parse_yaml
YAML文字列を解析します。 true、false、nil、数値、文字列、配列、ハッシュをサポートします
例
| 例 | 結果 |
|---|---|
workato.parse_yaml("---\nfoo: bar") | "{ "foo" => "bar" }" |
workato.parse_yaml("---\n- 1\n- 2\n- 3\n") | "[1, 2, 3]" |
render_yaml
オブジェクトをYAML文字列にレンダリングします。
例
| 例 | 結果 |
|---|---|
workato.render_yaml({ "foo" => "bar" }) | "---\nfoo: bar\n" |
workato.render_yaml([1,2,3]) | "---\n- 1\n- 2\n- 3\n" |
lookup
このFormulaを使用すると、キーを使用してWorkatoルックアップ テーブルから値をルックアップできます。 lookup Formulaではデータ型と大文字小文字が区別されます。
lookup Formulaでデータピルを使用する場合は、データを正しい形式に変換することをお勧めします。 たとえば、整数と文字列の両方を含む列を比較する予定がある場合は、.to_s Formulaを使用して整数型のデータピルを文字列に変換します。
構文
Formulaを構成するには、次の構文を使用します。
lookup('Lookup table name', 'Match column': 'Match value')['Return column']このFormulaは、指定されたルックアップ テーブル内でMatch columnがMatch valueと一致する行を検索します。 その後、その行の指定されたReturn columnから値を返します。
Formulaには次のパラメーターが含まれます。
Lookup table name: クエリするルックアップ テーブル。Match column: ルックアップキーとして使用される列。Match value: キー列内の行を識別する値。Return column: 結果を提供する列。
例
たとえば、名前がDepartment CodeでIDが6の次のルックアップ テーブルを使用します。
部門コードのサンプルルックアップ テーブル
| 例 | 結果 |
|---|---|
lookup('Department Lookup table', 'Department Code': 'ACC')['Department'] | "Accounting" |
lookup('Department Lookup table', 'Department Code': 'SLS')['Department'] | "Sales" |
lookup('Department Lookup table', 'Department': 'Marketing')['Department Code'] | "MKT" |
lookup('Department Lookup table', 'Department': 'marketing')['Department Code'] | nil 照合では大文字小文字が区別されるため、値"marketing"が見つかりません |
lookup('Department Lookup table', 'Department': 'Marketing')['Department code'] | nil 照合では大文字小文字が区別されるため、列"Department code"が見つかりません |
lookup('6', 'Department code': 'ACC')['Department'] | "Accounting" 注: ルックアップ テーブルIDは引用符 ""で囲むことを忘れないでください。 |
Lookup IDの使用
ルックアップ テーブル名とルックアップ テーブルIDは互換的に使用できます。 ルックアップ テーブルIDはURLで確認できます。
例:
https://app.workato.com/lookup_tables/<lookup_table_id>lookup_table
このFormulaを使用すると、静的ルックアップ テーブルを作成し、キーと値を定義できます。 大文字小文字とデータ型が区別されます。
例
| 例 | 結果 |
|---|---|
{"key1" => "value1", "key2" => "value2", "key3" => "value3"}["key2"] | "value2" |
{"High" => "urgent", "Medium" => "mid", "Low" => "normal"}["Low"] | "normal" |
{"High" => "urgent", "Medium" => "mid", "Low" => "normal"}["low"] | nil |
{"High" => "urgent", "Medium" => "mid", "Low" => "normal"}["normal"] | nil |
{1 => "1", 2 => "2", 3 => "3"}[2] | "2" |
{1 => "1", 2 => "2", 3 => "3"}[2.0] | nil |
{1 => "1", 2 => "2", 3 => "3"}["2"] | nil |
data_table_lookup
このFormulaを使用すると、キーを使用してData tablesから値をルックアップできます。 lookup Formulaでは大文字小文字とデータ型が区別されます。
lookup Formulaでデータピルを使用する場合は、データを正しい形式に変換することをお勧めします。 たとえば、文字列型の列を比較する予定がある場合は、.to_s Formulaを使用して整数型のデータピルを文字列に変換します。
プロジェクト名、テーブル名、ルックアップキー、およびルックアップ条件は、適切な大文字小文字を含め、Data tablesに保存されているとおりに正確に記述してください。
構文
Formulaを構成するには、次の構文を使用します。
data_table_lookup('Project name', 'Table name', 'Column name': 'Value to search on')['Return column']このFormulaは、指定されたData tables内でColumn nameがValue to search onと一致する行を検索します。 その後、その行の指定されたReturn columnから値を返します。
Formulaには次のパラメーターが含まれます。
Project name: Data tablesを保持するプロジェクト。Table name: クエリする特定のData tables。Column name: 一致を見つけるために使用される列。Value to search on: キー列内の行を識別する値。Return column: 結果を提供する列。
例
たとえば、Weddingプロジェクト内にある名前がWedding Guestsの次のデータテーブルを使用します。
サンプル"Wedding Guests" Data table
| 例 | 結果 |
|---|---|
data_table_lookup('Wedding', 'Wedding Guests', 'Transport': 'Yes')['Seat No.'] | "10" |
data_table_lookup('Wedding', 'Wedding Guests', 'Lunch': 'No')['First Name'] | "A little" |
data_table_lookup('Wedding', 'Wedding Guests', 'First Name': 'Angela')['Table No.'] | 1 |
data_table_lookup('Wedding', 'Wedding Guests', 'First Name': 'angela')['Table No.'] | nil 照合では大文字小文字が区別されるため、値"angela"が見つかりません |
data_table_lookup('Wedding', 'Wedding Guests', 'First Name': 'Angela')['Table no.'] | nil 照合では大文字小文字が区別されるため、列"Table no."が見つかりません |
data_table_lookup('Wedding', 'Wedding Guests', 'first name': 'Angela')['Table No.'] | nil 照合では大文字小文字が区別されるため、列"first name"が見つかりません |
Last updated: