利用可能なRubyメソッド
Workatoは、SDKフレームワーク内でRubyのパブリックインスタンスメソッドのサブセットを実装しています。 このドキュメントでは、コネクタの構築時に使用できるRubyメソッドを一覧表示します。
ホワイトリストの削除
Workatoは、2025年3月からSDKフレームワークのホワイトリストを削除しました。 これにより、開発者はSDKコンテナ内で、組み込みライブラリを含むRuby 2.7の全機能と、利用可能なRuby gemにアクセスできるようになりました。 この変更により、SDK開発者がプラットフォーム内で活用できる機能の範囲が大幅に拡大します。
rubyホワイトリストの削除により利用可能になった機能については、詳細を参照してください。
この機能強化はRubyコードコネクターには適用されません。
個人用の再利用可能なメソッド
Workato SDKを使用する場合、任意のブロックで使用する個人用の再利用可能なメソッドを宣言できます。
at
指定された引数を使用して新しい時刻オブジェクトを作成します。
atメソッド定義を参照してください。
abs
数値の絶対値を返します。
account_property
ユーザーのワークスペース内の特定のアカウントプロパティの値を返します。
client_secret = account_property('hubspot_webhook_client_secret')このメソッドは、connectionハッシュ内の次のlambdaからのみ呼び出せることに注意してください。
authorization_urltoken_urlacquirebase_uri
また、actions、triggers、methods、object_definitions、pick_lists内のその他のlambdaでも呼び出せます。
aes_cbc_encrypt
CBCモードによるAES暗号化。 128、192、256ビットのキーを受け入れます。
key128 = workato.pbkdf2_hmac_sha1("password", workato.random_bytes(8))
workato.aes_cbc_encrypt("text_to_encrypt", key128)aes_cbc_decrypt
CBCモードによるAES復号。 128、192、256ビットのキーを受け入れます。
workato.aes_cbc_decrypt("text_to_decrypt", key128)aes_gcm_encrypt
GCMモードを使用して、AESで暗号化された文字列と認証タグを返します。 初期化ベクトル(IV)キーサイズは12バイトである必要があります。 128、192、256ビットのキーを受け入れます。
# Generate a salt for key derivation
salt = workato.random_bytes(8)
# Derive a key using PBKDF2 with HMAC-SHA1
key128 = workato.pbkdf2_hmac_sha1("password", salt)
# Initialize an IV (initialization vector)
iv = "init_vector0"
# Encrypt the text
encrypted_data = workato.aes_gcm_encrypt("text_to_encrypt", key128, iv) # [0x3040ffe9e51d4a929605fe0a262eea, 0x0f7e0a05eb25512c03ffafca43418a12]文字列値を受け入れるauth_dataを指定することもできます。
auth_data = "my_auth_data"
# Generate a salt for key derivation
salt = workato.random_bytes(8)
# Derive a key using PBKDF2 with HMAC-SHA1
key128 = workato.pbkdf2_hmac_sha1("password", salt)
# Initialize an IV (initialization vector)
iv = "init_vector0"
# Encrypt the text
encrypted_data = workato.aes_gcm_encrypt("text_to_encrypt", key128, iv, auth_data) # [0x3040ffe9e51d4a929605fe0a262eea, 0x0f7e0a05eb25512c03ffafca43418a12]結果は[encrypted_string, auth_tag]形式の配列です。 これらの値を個別に取得するには、.firstおよび.lastFormulaを使用します。
aes_gcm_decrypt
GCMモードを使用して、AESで復号された文字列を返します。 初期化ベクトル(IV)キーサイズは12バイトである必要があります。 128、192、256ビットのキーを受け入れます。
decrypted_string = workato.aes_gcm_decrypt(encrypted_string, key128, auth_tag, iv) # 0x746578745f746f5f656e6372797074auth_dataを使用して暗号化した場合は、Formulaに含める必要があります。
decrypted_string = workato.aes_gcm_decrypt(encrypted_string, key128, auth_tag, iv, auth_data) # 0x746578745f746f5f656e6372797074出力は16進形式の生バイトシーケンスです。 .as_utf8Formulaを追加すると、UTF-8文字列にデコードできます。
decrypted_string = workato.aes_gcm_decrypt(encrypted_string, key128, auth_tag, iv, auth_data).as_utf8 # "text_to_encrypt"after_error_response
HTTPリクエストにチェーンして、失敗したリクエストをrescueできます。 エラー処理を参照してください。
after_response
HTTPリクエストにチェーンして、レスポンスのヘッダーなどを利用できます。 エラー処理を参照してください。
ago
過去の時点に戻します。 タイムスタンプを返します。
2.days.ago #2017-01-15T12:30:00.000000-07:00 if time now is 2017-01-17T12:30:00.000000-07:00
30.minutes.ago #2017-01-15T12:30:00.000000-07:00 if time now is 2017-01-15T13:00:00.000000-07:00
30.seconds.ago #2017-01-15T12:30:00.000000-07:00 if time now is 2017-01-15T12:30:30.000000-07:00agoメソッド定義を参照してください。
all?
コレクションの各要素を指定されたブロックに渡します。 ブロックがfalseまたはnilを一度も返さない場合、このメソッドはtrueを返します。
%w[ant bear cat].all? { |word| word.length >= 3 } #=> trueall?メソッド定義を参照してください。
as_string
バイトシーケンスを指定されたエンコーディングの文字列としてデコードします。
"0J/RgNC40LLQtdGC\n".decode_base64.as_string('utf-8')as_utf8
バイトシーケンスをUTF-8文字列としてデコードします。
"0J/RgNC40LLQtdGC\n".decode_base64.as_utf8aws.generate_signature
AWSサービス用のAWS V4 Signatureを生成し、リクエストを作成するためのURLと署名を含むハッシュを返します。
aws.generate_signature(
connection: connection,
service: "s3",
region: connection["aws_region"],
host: "s3.dualstack.#{connection['aws_region']}.amazonaws.com",
method: "GET",
path: "/demo",
params: {
"list-type": 2,
"max-keys": 1000
}.compact,
headers: {
Test: "hello!"
},
payload: {
hello: "world"
}.to_json
)AWS認証を参照してください。
blank?
値がnullまたは空の文字列の場合はtrueを返し、それ以外の場合はfalseを返します。
binary?
値がバイナリ配列の場合はtrueを返します。
beginning_of_hour
指定されたタイムスタンプの時間の始まりのタイムスタンプを返します。
"2017-06-01T16:56:00.000000-07:00".to_time.beginning_of_hour #2017-06-01T16:00:00.000000 +0000beginning_of_day
指定されたタイムスタンプの午前0時のタイムスタンプを返します。
"2017-06-08T22:30:10.000000-07:00".to_time.beginning_of_day #2017-06-08T00:00:00.000000 +0000beginning_of_week
指定されたタイムスタンプについて、週の開始(月曜)の午前0時のタイムスタンプを返します。
"2017-08-18T00:00:00.000000-07:00".to_time.beginning_of_week #2017-08-14T00:00:00.000000 +0000beginning_of_month
指定されたタイムスタンプについて、月の開始の午前0時のタイムスタンプを返します。
"2017-01-30T22:35:00.000000-07:00".to_time.beginning_of_month #2017-01-01T00:00:00.000000 +0000beginning_of_year
指定されたタイムスタンプについて、年の開始の午前0時のタイムスタンプを返します。
"2017-01-30T22:35:00.000000 -07:00".to_time.beginning_of_year #2017-01-01T00:00:00.000000 +0000bytes
指定された文字列のバイト配列を返します。
"Hello".bytes # ["72","101","108","108","111"]bytesize
指定された文字列の長さをバイト単位で返します。
"Hello".bytesize # 5byteslice
長さではなく、指定されたバイトの部分文字列を返します。 場合によっては、非ASCII文字(たとえば日本語や中国語の文字)が複数のバイトを使用することがあります。
"abc漢字".byeslice(0,4) # "abc漢"bytesliceメソッド定義を参照してください。
capitalize
文字列の最初の文字を大文字にします。
case_sensitive_headers
HTTPメソッドにチェーンして、大文字と小文字を区別するヘッダーを導入できます。 デフォルトでは、WorkatoはRFC仕様に従い、ヘッダーの大文字と小文字の区別を考慮しません。
get("https://www.example.com").case_sensitive_headers("HeLlo": "world")checkpoint!
reinvoke_afterと同様に、checkpoint!メソッドはファイルストリームを消費するアクションで使用されます。 呼び出されると、Workatoはアクションの実行時間を確認します。 120秒を超える場合、Workatoは公平な処理を確保するためにわずかな遅延を加えてアクションレベルのタイムアウトを更新します。
これにより、現在の180秒のタイムアウト制限を超えるファイルを転送できます。
chunk
項目を列挙し、ブロックの戻り値に基づいてまとめてチャンク化します。
chunkメソッド定義を参照してください。
chunk_while
チャンク化された各要素の列挙子を作成します。 チャンクの開始はブロックによって定義されます。
chunk_whileメソッド定義を参照してください。
collect
enum内の各要素に対してブロックを1回実行した結果を含む新しい配列を返します。
collectメソッド定義を参照してください。
collect_concat
enum内の各要素に対してブロックを1回実行した連結結果を含む新しい配列を返します。
collect_concatメソッド定義を参照してください。
compact
nilではない値を持つハッシュを返します。
compactメソッド定義を参照してください。
count
指定された値に一致する配列内の要素数を返します。
["apple", "orange", "apple", "banana", "apple"].count("apple")詳細については、countメソッド定義を参照してください。
csv.parse
CSV文字列をJSON配列に解析し、データピルとして簡単に表示できるようにします。
workato.csv.parse("blue;1\nwhite;2\n", headers: "color;count", col_sep: ";")7つの引数を取ります。
string
解析するCSV文字列を表すメソッドの最初の位置。
headers
true(実際のCSVの最初の行がヘッダーとして使用されます)、stringのarray(各列ヘッダーに対応)、またはstring(適切な列区切り文字を含むCSVの人工的な最初の行)のいずれか。col_sep
CSV内の列区切り文字。 デフォルトは
,です。row_sep
CSV内の行区切り文字。 デフォルトは
\nです。quote_char
CSV内の引用文字。 デフォルトは二重引用符
"です。skip_blanks
文字列入力内の空行を無視するかどうかを示すブール値。 デフォルトはfalseです。
skip_first_line
最初の行をスキップするかどうかを示すブール値。
headersがtrueの場合に便利です。
制限: ファイルサイズは30 MB未満、CSV行数は65K未満である必要があります。
csv.generate
JSON配列からCSV文字列を生成し、ファイルとしてダウンストリームシステムに送信できるようにします。
workato.csv.generate(headers: ["color", "amount"], col_sep: ";") do |csv|
csv << [:blue, 1]
csv << [:white, 2]
end5つの引数を取ります。
headers
true(実際のCSVの最初の行がヘッダーとして使用されます)、stringのarray(各列ヘッダーに対応)、またはstring(適切な列区切り文字を含むCSVの人工的な最初の行)のいずれか。col_sep
CSV内の列区切り文字。 デフォルトは
,です。row_sep
CSV内の行区切り文字。 デフォルトは
\nです。quote_char
CSV内の引用文字。 デフォルトは二重引用符
"です。force_quotes
各出力フィールドを引用符で囲むかどうかを決定するブール値。
最後に、このCSVに個々の行を文字列の配列として追加できるlambdaを1つ取ります。
cycle
指定された回数だけ配列を巡回し、各要素に対してブロックを呼び出します。
cycleメソッド定義を参照してください。
decode_base64
Base64アルゴリズムを使用してデコードします。
decode_hex
16進数をバイナリ文字列にデコードします。
decode_url
文字列をURLデコードします。 このFormulaはURLデコードにCGI.unescapeを使用します。
decode_urlsafe_base64
Base64アルゴリズムのURLセーフな変更を使用してデコードします。
decrypt
AES-256-CBCアルゴリズムを使用して暗号化された文字列を復号します。 入力はRNCryptor V3形式である必要があります。
このメソッドは文字列ではなくバイト配列を返します。 Formulaに.as_string()または.as_utf8関数を追加すると、decryptメソッドの出力を文字列に変換できます。
deep_merge
ネストされた子ハッシュを含めて、ハッシュを別のハッシュとマージします。
deep_mergeメソッド定義を参照してください。
delete_at
配列内の要素を削除します。
delete_atメソッド定義を参照してください。
detect
配列内の各要素をブロックに渡します。 ブロックを満たす最初の要素を返します。
detectメソッド定義を参照してください。
dig
渡されたインデックスに対応する値オブジェクトを取得します。
digメソッドは、ネストされた配列やハッシュの階層を取り除くためによく使用されます。 たとえば、XMLデータ形式を扱う場合にdigメソッドをよく使用します。
digメソッド定義を参照してください。
drop
Enumeratorから最初のN個の要素を削除し、残りの要素を配列で返します。
[1, 2, 3, 4, 5, 0].drop(3) #=> [4, 5, 0]dropメソッド定義を参照してください。
drop_while
ブロックがnilまたはfalseを返す配列の最初の要素までの要素を削除しますが、その要素自体は含みません。
drop_whileメソッド定義を参照してください。
dst?
指定されたタイムゾーンで時刻が夏時間内にある場合はtrueを返します。
each
基本的なイテレーター。
[1, 2, 3].each { |i| puts i }each_byte
指定された文字列の各バイトを指定されたブロックに渡します。ブロックが指定されていない場合は列挙子を返します。
each_byteメソッド定義を参照してください。
each_char
指定された文字列の各文字を指定されたブロックに渡します。 ブロックが指定されていない場合は列挙子を返します。
each_charメソッド定義を参照してください。
each_cons
連続するN個の要素の各配列に対して、指定されたブロックを反復実行します。 ブロックが指定されていない場合は列挙子を返します。
each_consメソッド定義を参照してください。
each_entry
配列を反復処理し、ブロック内で各要素を返します。
each_entryメソッド定義を参照してください。
each_slice
N個の要素の各スライスに対して、指定されたブロックを反復実行します。 ブロックが指定されていない場合は列挙子を返します。
each_sliceメソッド定義を参照してください。
each_with_index
インデックス付きで返されるイテレーター。
[1, 2, 3].each_with_index { |item, index| puts "#{index}:#{item}" }each_with_indexメソッド定義を参照してください。
each_with_object
定義可能なオブジェクト付きで返されるイテレーター。
[%w(foo bar)].each_with_object({}) { |str, hsh| hsh[str] = str.upcase }
# => {'foo' => 'FOO', 'bar' => 'BAR'}each_with_objectメソッド定義を参照してください。
encode_hex
バイナリ文字列を16進表現に変換します。
"0J/RgNC40LLQtdGC\n".decode_base64.encode_hexencode_sha256
SHA256アルゴリズムを使用してエンコードします。 出力はバイナリ文字列です。 16進表現に変換するにはencode_hexを使用します。
"hello".encode_sha256 #=> 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
"hello".encode_sha256.encode_hex #=> 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824encode_sha512
SHA512アルゴリズムを使用してエンコードします。 出力はバイナリ文字列です。 16進表現に変換するにはencode_hexを使用します。
"hello".encode_sha512 #=> 0x9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
"hello".encode_sha512.encode_hex #=> 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043encode_base64
Base64アルゴリズムを使用してエンコードします。
encode_url
文字列をURLエンコードします。
'Hello World'.encode_url # 'Hello%20World'encode_urlsafe_base64
Base64アルゴリズムのURLセーフな変更を使用してエンコードします。
encode_www_form
ハッシュをURLエンコードされたパラメータ文字列に結合します。
{"apple" => "red green", "2" => "3"}.encode_www_form #"apple=red+green&2=3"ends_of_month
月末を表す新しい日付/時刻を返します。
"2017-08-18T00:00:00".to_time.end_of_month #2017-08-31 23:59:59 +0000ends_with?
文字列が特定のパターンで終わる場合はtrueを返します。 それ以外の場合はfalseです。
"Hello!".ends_with?("!") #trueentries
enum内の項目を含む配列を返します。
(1..7).entries #=> [1, 2, 3, 4, 5, 6, 7]
{ 'a'=>1, 'b'=>2, 'c'=>3 }.entries #=> [["a", 1], ["b", 2], ["c", 3]]entriesメソッド定義を参照してください。
error
ユーザー定義のエラー本文を使用してジョブエラーを発生させます。
error("Unable to find Account with ID: 123")even?
整数が偶数の場合はtrueを返します。
even?メソッド定義を参照してください。
except
指定されたキー以外のすべてを含むハッシュを返します。
{ name: "Jake", last_name: "Paul", age: "22" }.except(:name, :last_name) # { :age => "22" }exceptメソッド定義を参照してください。
exclude?
フィールドに値が含まれていない場合はtrueを返します。 大文字と小文字を区別します。
"Partner account".exclude?("Partner") #falseexcludeメソッド定義を参照してください。
execution_context
制限付きメソッドの利用可否
このメソッドは、Embeddedパートナーのワークスペース内で構築されたコネクタでのみ使用できます。 このアクションまたはトリガーが呼び出されたレシピとジョブのコンテキストを含むハッシュを返します。 該当するコンテキストがない場合、たとえばトリガーでリクエストが送信されたときのジョブIDなどでは、キーの値はnullになります。
次の表は、lambdaとexecution_contextの戻り値をまとめたものです。
| キー | recipe_id | job_id |
|---|---|---|
| execute | はい | はい |
| methods(execute内で呼び出される各メソッド) | はい | はい |
| apply(execute lambdaで送信されるリクエスト) | はい | はい |
| poll | はい | いいえ |
| methods(poll内で呼び出される各メソッド) | はい | いいえ |
| apply(poll lambdaで送信されるリクエスト) | はい | いいえ |
| object_definitions(定義された各fieldsメソッド) | いいえ | いいえ |
| pick_lists(定義された各pick_listメソッド) | いいえ | いいえ |
| methods(pick_listsまたはobject_definitions内で呼び出される各メソッド) | いいえ | いいえ |
execution_contextメソッドを使用して実行コンテキストを参照できます。
execution_context #=> { :recipe_id => "1234", :job_id => "j-ATh8ngzP-f69ak9" }
execution_context[:recipe_id] #=> "1234"
execution_context[:job_id] #=> "j-ATh8ngzP-f69ak9"fetch
指定されたキーに対応するハッシュ内の値を返します。
fetchメソッド定義を参照してください。
find_all
ブロックで示された条件を満たすハッシュまたは配列のすべての要素を含む配列を返します。
Foo = { :abc => 1, :bad => [1,2] }
Foo.find_all { |i| i[0] == :abc } # [[:abc, 1]]find_allメソッド定義を参照してください。
find_index
配列内の各要素を指定されたブロックと比較し、最初に一致した要素のインデックスを返します。
(1..100).find_index { |i| i % 5 == 0 and i % 7 == 0 } #=> 34find_indexメソッド定義を参照してください。
first
リスト内の最初の項目を返します。 リスト内の最初のn個の項目を返すためにも使用できます。
firstメソッド定義を参照してください。
flatten
多次元配列を単純な配列に平坦化します。
[[1, 2, 3],[4,5,6]].flatten #[1, 2, 3, 4, 5, 6]flattenメソッド定義を参照してください。
flat_map
enum内の各要素に対してブロックを1回実行した連結結果を含む新しい配列を返します。
[[1, 2], [3, 4]].flat_map { |e| e + [100] } #=> [1, 2, 100, 3, 4, 100]flat_mapメソッド定義を参照してください。
follow_redirection
デフォルトでは、ほとんどの3XXリダイレクトHTTPコードに従います。 場合によっては、任意のレスポンスコードのリダイレクトに従うためにこれを適用する必要があります。
action_with_follow_redirection: {
execute: lambda do |_connection, _input|
get('https://run.mocky.io/v3/41abc094-6b10-41a9-8201-b15146258b12').follow_redirection.after_response do |code, body, headers|
{
code: code,
body: body,
headers: headers
}
end
end
}format_json
リクエストをJSON形式に変換し、レスポンス本文をJSON形式で期待します。
format_map
入力配列内の各項目にフォーマットを適用して、新しい文字列配列を作成します。
[[{name: 'Jake', age: 23}].format_map('Name: %{name}, Age: %{age}') #['Name: Jake, Age: 23']
[[22, 45], [33, 88]].format_map('Id: %s, Count: %s') #['Id: 22, Count: 45', 'Id: 33, Count: 88']
['Alex', 'Hao', 'Kai'].format_map('Name: %s') #['Name: Alex', 'Name: Hao', 'Name: Kai']format_mapメソッド定義を参照してください。
format_xml
リクエストをXML形式に変換し、レスポンス本文をXML形式で期待します。
3つの引数を取ります。
root_element_name
送信XMLペイロードにルート要素タグを追加します。
namespaces
名前空間用にペイロードへ追加のタグを追加します。
strip_response_namespaces
XMLレスポンスから名前空間を削除します。
from_now
未来の時点に進めます。 Formulaが実行された時点に、指定された期間を太平洋時間(UTC-8/UTC-7)で加算したタイムスタンプを返します。
4.months.from_now #2017-05-23T14:40:07.338328-07:00
2.days.from_now #2017-01-05T14:40:07.338328-07:00
30.minutes.from_now
12.seconds.from_nowfrom_xml
XML文字列をハッシュに変換します。
"<?xml version="1.0" encoding="UTF-8"?> <hash><foo type="integer"></foo></hash>".from_xml # { "hash": [ "foo": [ { "@type": "integer", "content!": "1" } ] ] }grep
条件を満たすすべての要素について列挙子を検索します。
grepメソッド定義を参照してください。
grep_v
条件を満たさないすべての要素について列挙子を検索します。
grep_vメソッド定義を参照してください。
group_by
配列をセットにグループ化します。
group_byメソッド定義を参照してください。
gsub
パターンを値で置換します。 大文字と小文字を区別します。
"Jean Marie".gsub(/J/, "M") #"Mean Marie"gsubメソッド定義を参照してください。
has_key?
指定されたキーがハッシュ内に存在する場合はtrueを返します。
has_key?メソッド定義を参照してください。
headers
リクエストにヘッダーを追加します。
.headers(Authorization: "Bearer HTB674HJK1")hmac_md5
HMAC_MD5署名を作成します。
"username:password:nonce".hmac_md5("key")hmac_sha1
HMAC_SHA1署名を作成します。
"username:password:nonce".hmac_sha1("key")hmac_sha256
HMAC_SHA256署名を作成します。
"username:password:nonce".hmac_sha256("key")hmac_sha512
HMAC_SHA512署名を作成します。
"username:password:nonce".hmac_sha512("key")ignore_redirection
リクエストがすぐにリダイレクトされないようにします。 リクエストがファイルをダウンロードするためにAWS S3などのセカンダリサイトへリダイレクトされる場合によく使用されます。 "current_url"を使用して、apply:キーで使用されている認証を取り除く必要があります。
action_with_ignore_redirection: {
execute: lambda do |_connection, _input|
get('https://run.mocky.io/v3/41abc094-6b10-41a9-8201-b15146258b12').ignore_redirection.after_response do |code, body, headers|
{
code: code,
body: body,
headers: headers
}
end
end
},ignored
カンマ区切りのフィールドリストを無視します。
object_definition["user"].ignored("id", "created_at")include?
フィールドに値が含まれている場合はtrueを返します。 それ以外の場合はfalseです。
include?メソッド定義を参照してください。
inject
操作を使用して配列内の要素を結合します。
injectメソッド定義を参照してください。
insert
配列に要素を挿入します。
insertメソッド定義を参照してください。
in_time_zone
時刻を指定されたタイムゾーンに変換します。
"2017-09-06T18:30:15.671720-05:00".to_time.in_time_zone("America/Los_Angeles") #"2017-09-06T16:30:15.671720-07:00"is_a?
classがobjのクラスである場合、またはclassがobjのスーパークラスまたはobjに含まれるモジュールのいずれかである場合はtrueを返します。
Workatoは現在、次のクラスをサポートしています。
- 配列
- ハッシュ
- 時刻
- 文字列
- 整数
- Float
is_a?メソッド定義を参照してください。
is_true?
値をブール値に変換し、値がtruthyの場合はtrueを返します。
is_not_true?
値をブール値に変換し、値がtruthyでない場合はtrueを返します。
iso8601
日付/日時変数をISO8601形式に変換します。
join
配列要素を文字列に結合します。
joinメソッド定義を参照してください。
jwt_decode
次のいずれかのアルゴリズムを使用してJSON Web Token(JWT)をデコードします。
- RS256
- RS384
- RS512
- HS256
- HS384
- HS512
- ES256
- ES384
- ES512
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
次のいずれかのアルゴリズムを使用してJSON Web Token(JWT)を作成します。
- RS256
- RS384
- RS512
- HS256
- HS384
- HS512
- ES256
- ES384
- ES512
次の例の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..."last
リスト内の最後の項目を返します。 リスト内の最後のn個の項目を返すためにも使用できます。
lastメソッド定義を参照してください。
ljust
文字列を左揃えにし、必要な長さになるまで空白または指定されたパターンで埋めます。
" test".ljust(10, "*") # " test*****"ljustメソッド定義を参照してください。
lookup
Workatoで定義されたルックアップ テーブルからレコードをルックアップします。
lookup('States list', 'State code': 'AZ')['State name'] #"Arizona"lookupメソッド定義を参照してください。
lstrip
文字列の先頭から空白を削除します。
" Test ".lstrip #"Test "lstripメソッド定義を参照してください。
map
各要素に対してブロックを呼び出した後の新しい配列を返します。
md5_hexdigest
MD5 Message-Digest Algorithmを使用してメッセージダイジェストを作成します。
"hello".md5_hexdigest #5d41402abc4b2a76b9719d911017c592match?
文字列にパターンが含まれている場合はtrueを返します。 大文字と小文字を区別します。
"Jean Marie".match?(/Marie/) #truemax_by
指定されたブロックから最大値を与えるenum内のオブジェクトを返します。
%w(albatross dog horse).max_by { |x| x.length } # albatrossmember?
include?のエイリアス。
member?メソッド定義を参照してください。
merge
マージされた内容を含む新しいハッシュを返します。
mergeメソッド定義を参照してください。
minmax
enumerable内の最小値と最大値を含む2要素の配列を返します。
a = %w(albatross dog horse)
a.minmax #=> ["albatross", "horse"]
a.minmax { |a, b| a.length <=> b.length }
#=> ["dog", "albatross"]minmaxメソッド定義を参照してください。
minmax_by
指定されたブロックからそれぞれ最小値と最大値に対応するenum内のオブジェクトを含む2要素の配列を返します。
a = %w(albatross dog horse)
a.minmax_by { |x| x.length } #=> ["dog", "albatross"]minmax_byメソッド定義を参照してください。
min_by
指定されたブロックから最小値を与えるenum内のオブジェクトを返します。
a = %w(albatross dog horse)
a.min_by { |x| x.length } #=> "dog"min_byメソッド定義を参照してください。
net.lookup
指定されたホストの指定されたDNSレコードをルックアップします。
workato.net.lookup("www.google.com", "A") # => [{"address": "172.253.122.106"}, {"address":"172.253.122.103"}]2つの引数を取ります。
name
ドメインやホストなどのリソース名。
レコードタイプ
"SRV"または"A" DNSレコードタイプのみをサポートします
next
列挙子内の次のオブジェクトを返し、内部位置を前に進めます。
これは、lambda関数が実行される前に入力をチェックするガード句を追加する方法としてnextを使用できるconfig_fieldsでよく使用されます。
object_definitions: {
document: {
fields: lambda do |connection, config_fields, object_definitions|
next [] if config_fields.blank?
get("https://www.webmerge.me/api/documents/#{config_fields["document_id"]}/fields").map {
|field| field.slice("name")
}
end
}
}nextメソッド定義を参照してください。
none?
コレクションの各要素を指定されたブロックに渡します。 すべての要素に対してブロックがtrueを一度も返さない場合、このメソッドはtrueを返します。
%w{ant bear cat}.none? { |word| word.length == 5 } #=> truenone?メソッド定義を参照してください。
now
Formulaが実行された時点のタイムスタンプを太平洋時間(UTC-8/UTC-7)で返します。
now #2017-01-23T14:04:53.365908-08:00
now + 2.days #2017-01-25T14:04:53.365908-08:00odd?
整数が奇数の場合はtrueを返します。 odd?メソッド定義を参照してください。
one?
コレクションの各要素を指定されたブロックに渡します。 ブロックがちょうど1回trueを返す場合、このメソッドはtrueを返します。
[ nil, true, false ].one? #=> trueone?メソッド定義を参照してください。
only
カンマ区切りのフィールドリストをホワイトリストに登録します。
object_definition["user"].only("id", "name")ordinalize
数値を、first、second、third、fourthなど順序付きシーケンス内の位置を示す序数文字列に変換します。
"1".ordinalize # "First"pack
配列の内容をバイナリシーケンスにパックします。
packメソッド定義を参照してください。
parallel
リクエストの配列を受け入れ、複数のスレッドで実行できるようにします。
batches = (0..200).map do |batch|
post(url).headers(headers).request_body(payload)
end
results = parallel(batches, threads: 20)詳細については、マルチスレッドアクションを参照してください。
parameterize
文字列内の特殊文字を置換します。
"öüâ".parameterize #"oua"params
リクエストにパラメータを追加します。
.params(api_key: "HTB674HJK1")parse_json
json.parseと同じように動作します。
parse_jsonメソッド定義を参照してください。
parse_yaml
YAML文字列を解析します。 true、false、nil、数値、文字列、配列、ハッシュをサポートします。
workato.parse_yaml("---\nfoo: bar") # => { "foo" => "bar" }payload
リクエストにペイロードを追加します。
.payload(id: "345")pbkdf2_hmac_sha1
パスワードとソルトを使用して、さまざまなビット長のキーを作成します。 HMAC Sha1を使用します。
key128 = workato.pbkdf2_hmac_sha1("password", workato.random_bytes(8))
key192 = workato.pbkdf2_hmac_sha1("password", workato.random_bytes(8), 1000, 24)
key256 = workato.pbkdf2_hmac_sha1("password", workato.random_bytes(8), 1000, 32)pluck
オブジェクトの配列から1つ以上の属性を選択します。
[
{"id": 1, "name": "David"},
{"id": 2, "name": "Peter"}
].pluck("id")[1, 2]を返します。
pluralize
文字列内の単語の複数形を返します。
pluralizeメソッド定義を参照してください。
pop
selfから最後の要素を削除して返します。配列が空の場合はnilを返します。
数値nが指定された場合、最後のn個以下の要素の配列を返し、それを配列から削除します。
a = [ "a", "b", "c", "d" ]
a.pop #=> "d"
a.pop(2) #=> ["b", "c"]
a #=> ["a"]popメソッド定義を参照してください。
presence
存在する場合は値を返します。 それ以外の場合はnilを返します。
nil.presence #nil
"".presence #nil
0.presence #0presenceメソッド定義を参照してください。
present?
フィールドに値がある場合はtrueを返します。 それ以外の場合はfalseです。
nil.present? #false
"".present? #false
0.present? #truepresent?メソッド定義を参照してください。
puts
Rubyバージョンのconsole.logまたはstdoutです。 putメソッドとは異なります。
putsメソッドを使用した出力は、コードエディターでテストする際にコンソールログに表示されます。 デバッグの支援に使用します。
rand
0から1までの乱数。
random_bytes
指定された数のランダムバイトを生成します。
workato.random_bytes(8)reduce
ブロック、またはメソッドや演算子の名前を指定するシンボルによって指定された二項演算を適用して、enumのすべての要素を結合します。
(5..10).reduce { |sum, n| sum + n } # 45reduceメソッド定義を参照してください。
reinvoke_after
非同期APIを扱う複数ステップのアクションで使用されます。 このメソッドを呼び出すと、呼び出し元の元のexecute lambdaを再呼び出しする前に、ジョブが特定の間隔だけ一時停止します。 ジョブを一時停止する時間を示すsecondsと、追加のコンテキストでジョブを再呼び出しできるようにするcontinueを受け入れます。
reinvoke_after(
seconds: step_time,
continue: {
current_step: current_step + 1,
jobid: response['jobReference']['jobId']
}
)詳細については、マルチステップアクションを参照してください。
reject
ブロックがfalseを返す要素を選択的に返します。 selectと似ていますが逆です。
rejectメソッド定義を参照してください。
render_yaml
オブジェクトをYAML文字列にレンダリングします。
workato.render_yaml({ "foo" => "bar" }) # => "---\nfoo: bar\n"response_format_json
レスポンスをJSON形式で期待します。
response_format_raw
レスポンスをraw形式で期待します。 これは、レスポンスとしてバイナリデータ(PDFや画像など)を期待するHTTPアクションの後にチェーンできます。
response_format_xml
レスポンスをXML形式で期待します。 1つの引数を取ります。
- strip_response_namespaces
- XMLレスポンスから名前空間を削除します。
request_format_json
リクエストをJSON形式に変換します。
request_format_multipart_form
リクエストをmultipart_form形式に変換します。
request_format_raw
リクエストをraw形式に変換します。
request_format_www_form_urlencoded
リクエストをURLエンコード形式に変換します。
request_format_xml
リクエストをXML形式に変換します。
2つの引数を取ります。
root_element_name
送信XMLペイロードにルート要素タグを追加します。
namespaces
名前空間用にペイロードへ追加のタグを追加します
required
カンマ区切りのフィールドリストを必須にします。
object_definition["user"].required("id", "created_at")reverse
文字列または配列を反転します。
reverse_each
一時配列を構築し、その配列を逆順に走査します。
reverse_eachメソッド定義を参照してください。
rjust
文字列を右揃えにし、指定された長さになるまで空白またはパターンで埋めます。
"test".rjust(5) #" test"
"test".rjust(10, "*!") #"*!*!* test"rjustメソッド定義を参照してください。
round
通常の丸め規則に従って数値を丸めます。
11.99.round #12
11.555.round(2) #11.56roundメソッド定義を参照してください。
rsa_sha256
RS256署名(RSAキーで署名されたSHA256ハッシュ)を作成します
input['StringToSign'].rsa_sha256(rsa_private_key).base64rsa_sha512
RS512署名(RSAキーで署名されたSHA512ハッシュ)を作成します。
input['StringToSign'].rsa_sha512(rsa_private_key).base64rstrip
文字列の末尾から空白を削除します。
" Test ".rstrip #" Test"rstripメソッド定義を参照してください。
scan
一致するパターンについて文字列をスキャンします。
"Thu, 01/23/2014".scan(/\d+/).join("-") #01-23-2014scanメソッド定義を参照してください。
scrub
文字列が無効なバイトシーケンスの場合は、無効なバイトを指定された置換文字で置き換えます。それ以外の場合はselfを返します。
"abc\u3042\x81".scrub("*") # "abc\u3042*"scrubメソッド定義を参照してください。
select
ブロックがtrueを返す要素を選択的に返します。
selectメソッド定義を参照してください。
SHA1
SHA1暗号化アルゴリズムを使用して、指定された文字列を暗号化します。
"abcdef".sha1.encode_base64 # "H4rBDyPFtbwRZ72oS4M+XAV6d9I="SHA1メソッド定義を参照してください。
singularize
pluralizeの逆です。 文字列内の単語の単数形を返します。
'posts'.singularize # => "post"singularizeメソッド定義を参照してください。
slice
開始インデックスと長さで定義された、指定された文字列の部分文字列を返します。
"Jean Marie\.slice(0,3) #"Jea"sliceメソッド定義を参照してください。
slice_after
特定の値の後で配列をスライスします。
["a", "b", "c"].slice_after("b").to_a # [["a", "b"], ["c"]]slice_afterメソッド定義を参照してください。
slice_before
特定の値の前で配列をスライスします。
["a", "b", "c"].slice_before("b").to_a # [["a"], ["b", "c"]]slice_beforeメソッド定義を参照してください。
slice_when
チャンク化された各要素の列挙子を作成します。
[1,2,4,9,10,11].slice_when { |i,j| i+1 != j}.to_a # [[1, 2], [4], [9, 10, 11]]slice_whenメソッド定義を参照してください。
smart_join
配列を文字列に結合します。 空の値とnil値を削除します。 結合前に空白をトリミングします。
[nil, " ", " Hello ", " World "].smart_join(" ") #Hello Worldsmart_joinメソッド定義を参照してください。
sort
新しいソート済み配列を返すソート関数。
sortメソッド定義を参照してください。
sort_by
selfを返すソート関数。
sort_byメソッド定義を参照してください。
split
定義されたパターンを区切り文字として使用し、文字列を配列に分割します。
"Split string".split() #["Split", "string"]
"Split string".split("t") #["Spli", " s", "ring"]splitメソッド定義を参照してください。
stream.out
Workatoのファイルストリーミング対応コネクタのいずれかと連携する、ファイルストリームを生成するアクションで使用されます。 このメソッドを呼び出すと、ダウンストリームアクションがファイルをダウンロードするときに呼び出されるstreamingコールバックを指定できます。
workato.stream.out("download_file", { file_id: file_id })詳細については、ファイルストリーミングを参照してください。
stream.in
Workatoのファイルストリーミング対応コネクタのいずれかと連携する、ファイルストリームを消費するアクションで使用されます。 このメソッドを呼び出すと、ファイルストリームを利用してファイルをチャンク単位でアップロードできるコードブロックを指定できます。
このメソッドは3つの引数を取ります。
- 最初の位置引数は、前のアクションからのファイル内容です
0のデフォルトオフセットを上書きするために使用されるfrom。 これは複数ステップのストリーミングの実装で使用されます- ストリームプロデューサーから要求されるサイズを上書きするために使用される
frame_size。
workato.stream.in(input["file"], from: previous_offset, frame_size: required_frame_size) do |chunk, starting_byte_range, ending_byte_range, eof, next_starting_byte_range|
put("/file/#{input['file_id']}").
headers("Content-Range": "byte #{starting_byte_range}-#{ending_byte_range}/*").
request_body(chunk).
presence
end詳細については、ファイルストリーミングを参照してください。
strip
文字列の先頭と末尾から空白を削除します。
" This is an example ".strip #"This is an example"stripメソッド定義を参照してください。
strip_tags
文字列からhtmlタグを削除します。
"<html><body>Double bubble</body></html>".strip_tags #"Double bubble"strftime
%-プレースホルダーを使用して日付または時刻をフォーマットします。
sub
パターンの最初の出現箇所を値で置換します。
"Mean Marie".sub(/M/, "J") #"Jean Marie"
"Hello".sub(/[aeiou]/, "\*") #"H*llo"suspend
このメソッドは再開待機アクションで使用されます。 これらのアクションは、長時間実行プロセスの完了時にAPIリクエストを送信できる外部システムと連携します。 このメソッドを呼び出すと、WorkatoがDeveloper APIへの対応するリクエストを受信するまで、または指定された一時停止時間が期限切れになるまで、ジョブが一時停止されます。
suspend(
continue: {
"state" => "suspended",
"url" => input['url']
},
expires_at: 10.minutes.from_now
)continue: このハッシュはbefore_suspend、before_resume、before_timeout_resumelambdaに渡されます。expires_at: これは、ジョブが再開リクエストを待機するPST時刻です。 この時刻を過ぎると、ジョブはtimeout呼び出しで続行します。 最大タイムアウトは60日です。
take
配列から最初のN個の要素を返します。
[1, 2, 3, 4, 5, 0].take(3) #=> [1, 2, 3]takeメソッド定義を参照してください。
take_while
ブロックがnilまたはfalseを返すまで要素をブロックに渡し、その後反復を停止して、それ以前のすべての要素の配列を返します。
[1, 2, 3, 4, 5, 0].take_while { |i| i < 3 } #=> [1, 2]take_whileメソッド定義を参照してください。
tap
xをブロックにyieldし、その後xを返します。
tapメソッドは変換によく使用されます。 たとえば、tapメソッドを使用してwebhookのペイロードを変換できます。 次の例を考えます。
{
"id" => {"value" => 1},
"name" => {"value" => 2}
}webhookペイロードがこの形式で配信される場合、tapを使用して、よりユーザーフレンドリーなJSONに変換できます。
webhook_notification: lambda do |input, payload|
payload.tap do |output|
output.each { |k, v| output[k] = v["value"] }
end
end最終的なJSONは次のようになります: {"id"=>1, "name"=>2}
tapメソッド定義を参照してください。
tls_client_cert
リクエストで使用するTLSキー、TLSクライアント、および中間証明書を指定できます。 単一のリクエストにチェーンして使用することも、applyブロックで一般的に使用することもできます。
get("https://www.exampleapi.com").
tls_client_cert(
certificate: connection['ssl_client_cert'],
key: connection['ssl_client_key'],
passphrase: connection['ssl_key_passphrase'],
intermediates: connection['client_intermediate_certs'] # pass array if there are multiple intermediate certs
)apply: lambda do |connection|
tls_client_cert(
certificate: connection['ssl_client_cert'],
key: connection['ssl_client_key'],
passphrase: connection['ssl_key_passphrase'],
intermediates: connection['client_intermediate_certs'] # pass array if there are multiple intermediate certs
)
endtls_server_certs
SSLハンドシェイクプロセス中に受け入れるTLSサーバー証明書を指定できます。 これは、自己署名証明書または信頼されていないルートCA証明書に役立ちます。 単一のリクエストにチェーンして使用することも、applyブロックで一般的に使用することもできます。
get("https://www.exampleapi.com").
tls_server_certs(
certificates: [connection['server_ca_cert']], #additional intermediate server certificates can be given.
strict: false # Set to true to only allow requests from the given server CA cert.
)apply: lambda do |connection|
tls_server_certs(
certificates: [connection['server_ca_cert']], #additional intermediate server certificates can be given.
strict: false # Set to true to only allow requests from the given server CA cert.
)
endto_currency
通貨文字列に変換します。
1234567890.50.to_currency # $1,234,567,890.50to_currency_code
alpha-2/3国コードまたは国名をISO4217通貨コードに変換します。
"India".to_currency_code #INRto_currency_name
alpha-2/3国コードまたは国名をISO4217通貨名に変換します。
"India".to_currency_name #Rupeesto_currency_symbol
alpha-2/3国コードまたは国名をISO4217通貨記号に変換します。
"India".to_currency_symbol # ₨to_country_alpha2
alpha-3国コードまたは国名をalpha2国コードに変換します。
"India".to_country_alpha2 #IN
"IND".to_country_alpha2 #INto_country_alpha3
alpha-2国コードまたは国名をalpha3国コードに変換します。
"Australia".to_country_alpha2 #AUS
"AU".to_country_alpha2 #AUSto_country_name
alpha-2/3国コードまたは国名をISO3166国名に変換します。
"GB".to_country_name #United Kingdom
"GBR".to_country_name #United Kingdomto_country_number
alpha-2/3国コードまたは国名をISO3166国番号に変換します。
"India".to_country_number #356to_date
文字列またはタイムスタンプを日付に変換します。 フォーマットできます。
"12/24/2014 10:30 PM".to_date(format: "MM/DD/YYYY")to_f
floatに変換します。 数値は通常の丸め規則に従って切り上げまたは切り下げられます。
45.to_f #45.0to_hex
バイナリ文字列を16進表現に変換します。
to_i
整数に変換します。 小数は常に切り捨てられます。
45.67.to_i #45to_json
ハッシュまたは配列をJSON文字列に変換します。
{"a" => "c d", "2" => "3"}.to_json #"{"a":"c d","2":"3"}"to_phone
文字列または数値をフォーマット済み電話番号に変換します。
5551234.to_phone # 555-1234
1235551234.to_phone(area_code: true) # (123) 555-1234
1235551234.to_phone(delimiter: " ") # 123 555 1234
1235551234.to_phone(country_code: 1) # +1-123-555-1234to_param
URLクエリ文字列として使用する文字列表現を返します。
{name: 'Jake', age: '22'}.to_param #name=Jake&age=22to_s
文字列に変換します。
45.67.to_s #"45.67"to_state_code
州名をコードに変換します。
"California".to_state_code #CAto_state_name
州コードを名前に変換します。
"CA".to_state_name #"CALIFORNIA"to_time
文字列または日付をタイムスタンプに変換します。
"2014-11-21".to_time #2014-11-21 00:00:00 +0000to_xml
ハッシュまたは配列をXML文字列に変換します。
{"name" => "Ken"}.to_xml(root: "user") # <user><name>Ken</name></user>today
今日の日付。 Formulaが実行された時点の日付を太平洋時間(UTC-8/UTC-7)で返します。
today #2016-07-13
today + 2.days #2016-07-15transliterate
非ASCII文字をASCII近似文字に置き換えます。存在しない場合は、デフォルトで'?'の置換文字に置き換えます。
'Chloé'.transliterate #Chloeupcase
文字列を大文字に変換します。
"Convert to UPCASE".upcase #"CONVERT TO UPCASE"uniq
配列内の一意の項目を返します。
[1.0, 1.5, 1.0].uniq #[1.0, 1.5]unpack
文字列を配列にデコードします。
unpackメソッド定義を参照してください。
utc
TimeをUTCタイムゾーンに変換します。
utcメソッド定義を参照してください。
uuid
UUIDを作成します。 リクエストで一意の文字列を送信する場合に便利です。
workato.uuid #c52d735a-aee4-4d44-ba1e-bcfa3734f553 => "eyJhbGciO..."wday
1を月曜日とする曜日を返します。
where
指定された条件で配列をフィルターします。
while
whileループ文。
ruby_loopsメソッド定義を参照してください。
wrap
引数がすでに配列でない限り、その引数を配列でラップします。
wrapメソッドは、whileループ文のexecuteブロックでよく使用されます。
execute: lambda do |connection, input|
{
accounts: Array.wrap(get("/accounts", input)["records"])
}
endこれにより、戻り値が何であっても、accounts変数が常に配列になります。 Workatoでは、連携するさまざまなAPIからの予期しない戻り値に備えるために、これをよく使用します。
wrapメソッド定義を参照してください。
yday
年内の日を返します。
"2016-07-19 10:45:30".to_time.yday #201yweek
年内の週を返します。
"2016-07-19 10:45:30".to_time.yweek #29zip
配列によって呼び出されるメソッドとして使用されます。 任意の引数を配列に変換し、selfの要素を各引数の対応する要素とマージします。
zipメソッド定義を参照してください。
Last updated: