その他のFormula

このページは機械翻訳により提供されています。翻訳内容と英語版に相違がある場合は、英語版が優先されます。

このセクションでは、複数のデータ型で動作するFormulaについて説明します。

WorkatoのFormulaは、許可リストに登録されたRubyメソッドです。 これらのFormulaの構文と機能は、通常変更されていません。 Formulaがnull(Rubyではnilと表されます)に対して動作する場合、present?presenceblank?を除き、ほとんどの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に更新します。

入力フィールドのNull Formula


clear

ターゲットアプリのフィールドの値をnull/nilにクリアします。 フィールドをFormulaモードに切り替えることを忘れないでください。

入力フィールドのClear Formulaターゲットアプリのフィールドをクリアする場合は、nullではなくclear Formulaを使用します


skip

このフィールドについて宛先アプリに何も渡しません。 フィールドに既存の値がある場合、その値は変更されません。

この例では、更新されたSalesforceレコードを使用してMarketoのリードを更新しようとします。 SalesforceのCompanyが存在するかどうかを確認します。 存在する場合、SalesforceのCompanyをMarketoに出力します。 それ以外の場合、Marketoレコードは変更されません。

入力フィールドのskip Formulaskip 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を構成するには、次の構文を使用します。

text
lookup('Lookup table name', 'Match column': 'Match value')['Return column']

このFormulaは、指定されたルックアップ テーブル内でMatch columnMatch 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を構成するには、次の構文を使用します。

text
data_table_lookup('Project name', 'Table name', 'Column name': 'Value to search on')['Return column']

このFormulaは、指定されたData tables内でColumn nameValue 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サンプル"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: