リストとハッシュのFormula
基本データ型(文字列や整数など)に加えて、複数の項目に関する情報や、1つの項目に関する複数の情報を含む、より複雑なデータ構造を扱う場合があります。
次のデータ構造を扱う場合があります:
WorkatoのFormulaは、Rubyメソッドの許可リストに追加されます。 許可リストに含まれるRubyメソッドのみがサポートされます。 許可リストへの新しいFormulaの追加をリクエストするには、Customer Success Managerにお問い合わせください。
リスト(配列)
配列は、任意のオブジェクトの順序付き整数インデックス付きコレクションです。 リストのインデックスは0から始まります。 リストと配列は同じデータ構造を指します。
次の例では、整数のリストは次のように表されます:
number_list = [100, 101, 102, 103, 104]リストは順序付けられているため、次のFormulaを使用して値を取得できます。 Workatoでは、この構文を使用して取得できるのは5番目の項目までです。
| Formula | 結果 |
|---|---|
| number_list.first | 100 |
| number_list.second | 101 |
| number_list.third | 102 |
| number_list.fourth | 103 |
| number_list.fifth | 104 |
| number_list.last | 104 |
インデックスを使用して、対応する値を取得することもできます。 インデックスは0から始まることに注意してください:
| Formula | 結果 |
|---|---|
| number_list[0] | 100 |
| number_list[1] | 101 |
| number_list[2] | 102 |
| number_list[3] | 103 |
Rubyのリストは負のインデックスをサポートします。
| Formula | 結果 |
|---|---|
| number_list[-1] | 104 |
| number_list[-2] | 103 |
| number_list[-3] | 102 |
| number_list[-4] | 101 |
リストは、インデックスとして範囲もサポートします。 これは値のみではなく、別のリストを返します。
| Formula | 結果 |
|---|---|
| number_list[0..2] | [100, 101, 102] |
| number_list[-3..-1] | [102, 103, 104] |
| number_list[0..-2] | [100, 101, 102, 103] |
ハッシュ
ハッシュは、一意のキーとその値の辞書のようなコレクションです。 リストと似ていますが、リストがインデックスとして整数を使用するのに対し、ハッシュでは任意のオブジェクト型を使用できます。 ハッシュは、対応するキーが挿入された順序で値を列挙します。
2つの値を持つハッシュの例を見てみましょう。'Acme widgets'と10は、それぞれitem_nameとitem_quantityの値です。
line_item = { 'item_name' => 'Acme widgets', 'item_qty' => 10 }| Formula | 結果 |
|---|---|
| line_item["item_name"] | "Acme widgets" |
| line_item["item_qty"] | 10 |
ハッシュのリスト
複数の明細項目を持つ請求書の例を次に示します。 これはハッシュのリストとして表されます。
line_items = [
{ 'item_no': 1, 'item_name' => 'Acme widgets', 'item_qty' => 10 },
{ 'item_no': 2, 'item_name' => 'RR bearings', 'item_qty' => 99 },
{ 'item_no': 3, 'item_name' => 'Coyote tyres', 'item_qty' => 7 }
]ハッシュのリストの例
次は、Contactsというハッシュのリストの例です。
これはテーブル形式のContactsリストです:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Joe | [email protected] | CA | ABC | 1000 |
| Jill | [email protected] | MA | NBC | 1000 |
| Joan | [email protected] | MA | NBC | 10000 |
| Jack | [email protected] | CA | HBO | 30000 |
これは、ハッシュのリスト形式のContactsリストです。
[
{
'name' => 'Joe',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'ABC',
'company_rev' => 1000,
'description' => { 'summary' => 'First time buyer', 'estimated_value' => 300 }
},
{
'name' => 'Jill',
'email' => '[email protected]',
'state' => 'MA',
'company' => 'NBC',
'company_rev' => 1000,
'description' => { 'summary' => 'Referral', 'estimated_value' => 500 }
},
{
'name' => 'Joan',
'email' => '[email protected]',
'state' => 'MA',
'company' => 'NBC',
'company_rev' => 10000,
'description' => { 'summary' => 'Recurring customer', 'estimated_value' => 900 }
},
{
'name' => 'Jack',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'HBO',
'company_rev' => 30000,
'description' => { 'summary' => 'Recurring customer', 'estimated_value' => 1000 }
}
]リストのFormula
first
このFormulaは、リスト内の最初の項目を返します。
リスト内の最初の_n_個の項目を返すためにも使用できます。 この場合、出力はリストとしてフォーマットされます。
構文
List.first(number)
- List - 入力リスト。
- number - (任意)リストから取得する項目数。 指定しない場合、Formulaは_1つ_の項目のみを返します。
利用例
| Formula | 結果 |
|---|---|
| ["One","Two","Three","Four","Five"].first() | "One" |
| ["One","Two","Three","Four","Five"].first(2) | ["One","Two"] |
| [1,2,3,4,5].first() | 1 |
| [1,2,3,4,5].first(3) | [1,2,3] |
仕組み
このFormulaは、リストから最初の_n_個の項目を返します。 _n_が1より大きい場合、出力はリストとしてフォーマットされます。
出力データ型
単一の項目を返す場合(つまり、引数が指定されていない場合)。 出力は、項目のデータ型に従ってフォーマットされます。
_1つ_より多くの項目を返す場合。 出力はリストデータ型としてフォーマットされます。
関連項目
last
このFormulaは、リスト内の最後の項目を返します。
リスト内の最後の_n_個の項目を返すためにも使用できます。 この場合、出力はリストとしてフォーマットされます。
構文
List.last(number)
- List - 入力リスト。
- number - (任意)リストから取得する項目数。 指定しない場合、Formulaは_1つ_の項目のみを返します。
利用例
| Formula | 結果 |
|---|---|
| ["One","Two","Three","Four","Five"].last() | "Five" |
| ["One","Two","Three","Four","Five"].last(2) | ["Four","Five"] |
| [1,2,3,4,5].last() | 5 |
| [1,2,3,4,5].last(3) | [3,4,5] |
仕組み
このFormulaは、リストから最後の_n_個の項目を返します。 _n_が1より大きい場合、出力はリストとしてフォーマットされます。
出力データ型
単一の項目を返す場合(つまり、引数が指定されていない場合)。 出力は、項目のデータ型に従ってフォーマットされます。
_1つ_より多くの項目を返す場合。 出力はリストデータ型としてフォーマットされます。
関連項目
index
指定された値に一致する最初の項目のインデックスを返します。 一致する項目が見つからない場合はnilを返します。
構文
Input.index(value)
- Input - 入力リスト。
- value - リスト内で検索する値。
利用例
| Formula | 結果 |
|---|---|
| [4, 5, 6, 7].index(6) | 2 |
| [4, 5, 6, 7].index(8) | nil |
count
リスト内の項目数を返します。
構文
List.count
List- リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
["Hello", "World", "Cat", "Dog"].count | 4 |
["Hello", "World", ["Sub-array", "Here"]].count | 3 |
["Hello", "World", nil, ["Sub-array", "Here"]].count | 4 |
where
指定されたWHERE条件を満たす行(ハッシュ)のみを取得します。 このFormulaは、1つ以上のキーと値のペアを持つハッシュ形式の単一引数を受け入れます。
条件のデフォルトのオペランドは等しい(==)です。 このFormulaは、次のオペランドもサポートします。 オペランドは、キーの末尾にスペースで区切って追加する必要があります。
| 名前 | 表記 | 例 |
|---|---|---|
| 等しい(デフォルト) | == | leads.where('state': 'CA') |
| より大きい | > | leads.where('company_revenue >': 10000) |
| 以上 | > = | leads.where('company_revenue >=': 10000) |
| より小さい | < | leads.where('company_revenue <': 10000) |
| 以下 | <= | leads.where('company_revenue <=': 10000) |
| 等しくない | != | leads.where('state !=': 'CA') |
条件引数としてデータピルを使用
静的値('CA'など)の代わりに、条件引数としてデータピルを使用できます。 データピルの値は実行時に処理されます。
contacts.where(state: datapill )
利用例
単一のwhere条件の例
contacts.where('state': 'CA')は次の行を返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Joe | [email protected] | CA | ABC | 1000 |
| Jack | [email protected] | CA | HBO | 30000 |
これらの行はハッシュのリストとして表されます:
[
{
'name' => 'Joe',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'ABC',
'company_rev' => 1000
},
{
'name' => 'Jack',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'HBO',
'company_rev' => 30000
}
]複合where Formulaの例
複合WHERE Formulaは、すべての条件に一致する行のみを取得します。
contacts.where('state': 'CA', 'company_revenue >=': 10000)
次の行を返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Jack | [email protected] | CA | HBO | 30000 |
これらの行はハッシュのリストとして表されます:
[
{
'name' => 'Jack',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'HBO',
'company_rev' => 30000
}
]警告 - 1つのキー内の複数の条件
複合WHERE Formulaで同じキーに複数の条件を適用した場合、最後の条件のみが考慮されます。 これにより以前の条件が上書きされ、予期しない結果につながる可能性があります。
次の例は、stateに複数の条件を適用すると、2番目のMAキーを含む行のみが返されることを示しています:
contacts.where('state': 'CA', 'state': 'MA')
MAであるstateを持つ行のみを返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Jill | [email protected] | MA | NBC | 1000 |
| Joan | [email protected] | MA | NBC | 10000 |
これらの行はハッシュのリストとして返されます。
[
{
'name' => 'Jill',
'email' => '[email protected]',
'state' => 'MA',
'company' => 'NBC',
'company_rev' => 1000
},
{
'name' => 'Joan',
'email' => '[email protected]',
'state' => 'MA',
'company' => 'NBC',
'company_rev' => 10000
}
]複数一致の例
特定のフィールドを複数の値と照合して、レコードをフィルターできます。 これは、WHERE条件で配列値を渡すことで行います。
contacts.where('company': ['ABC','HBO'])
このWHERE条件は、会社がABCまたはHBOの行を返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Joe | [email protected] | CA | ABC | 1000 |
| Jack | [email protected] | CA | HBO | 30000 |
これらの行はハッシュのリストとして返されます。
[
{
'name' => 'Joe',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'ABC',
'company_rev' => 1000
},
{
'name' => 'Jack',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'HBO',
'company_rev' => 30000
}
]パターンマッチングを使用したwhere条件の例
正規表現を使用してレコードをフィルターすることもできます。 これは、文字列の代わりに正規表現を渡すことで行います。
contacts.where('name': /^Jo/)
このWHERE条件は、nameがJoで始まる行を返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Joe | [email protected] | CA | ABC | 1000 |
| Joan | [email protected] | MA | NBC | 10000 |
これらの行はハッシュのリストとして表されます:
[
{
'name' => 'Joe',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'ABC',
'company_rev' => 1000
},
{
'name' => 'Joan',
'email' => '[email protected]',
'state' => 'MA',
'company' => 'NBC',
'company_rev' => 10000
}
]パターンマッチングを使用したwhere条件の例(データピルを使用)
正規表現パターン内でデータピルを使用すると、一致させる文字列を動的に変更できます。 ただし、正規表現パターンで変数を使用するには、正規表現式内でエスケープが必要です。
例: contacts.where(state: /#{ datapill }/)
次の画像は、'State'列の値にSalesforceからのデータピルStateStep 2内の文字列が含まれるルックアップ テーブルのすべての'Emails'を取得するために使用されるメソッドを示しています。
正規表現式でデータピルを使用
注: すべての正規表現メタ文字は、メタ文字として解釈しない場合はエスケープする必要があります。
where条件のチェーンの例
一連のWHERE条件がチェーンされている場合、Formulaは各where条件を順番に評価します。
contacts.where('state': 'CA').where('company_revenue >=': 10000)は次の行を返します。これは複合where Formulaと同じです:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Jack | [email protected] | CA | HBO | 30000 |
ただし、この場合、チェーンにより中間配列が生成されます:
contacts.where('state': 'CA')は最初に次を返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Joe | [email protected] | CA | ABC | 1000 |
| Jack | [email protected] | CA | HBO | 30000 |
そして.where('company_revenue >=': 10000)は、この中間配列をさらにフィルターして次のみを返します:
| name | state | company | company_rev | |
|---|---|---|---|---|
| Jack | [email protected] | CA | HBO | 30000 |
結果はハッシュのリストとして表されます:
[
{
'name' => 'Jack',
'email' => '[email protected]',
'state' => 'CA',
'company' => 'HBO',
'company_rev' => '30000'
}
]not演算子のチェーンの例
not演算子をチェーンすることで、WHERE Formulaを使用して2つの配列の差分を見つけることができます。 これは、元のリストと更新済みリストの2つのリストがあり、更新済みリストに元のリストのすべての値が含まれていることを確認するために両者を比較する場合に便利です。
例: contacts.where.not("id":updated_contacts.pluck('id'))は、元のリスト(contacts)に存在し、更新済みリスト(updated_contacts)にはない値を識別します。
except
指定されたキー以外のすべてを含むハッシュを返します。
hash = { a: true, b: false, c: nil }
hash.except(:c) # => { a: true, b: false }
hash.except(:a, :b) # => { c: nil }
hash # => { a: true, b: false, c: nil }pluck
指定された列のみを取得します。
利用例
単一列出力の例
contacts.pluck("email")は次を返します
| [email protected] |
| [email protected] |
| [email protected] |
| [email protected] |
単一列の場合、結果は配列として返されます:
["[email protected]", "[email protected]", "[email protected]", "[email protected]"]複数列データセットの例
contacts.where("state ==": "CA").pluck("email", "company")は次を返します
| company | |
|---|---|
| [email protected] | ABC |
| [email protected] | NBC |
| [email protected] | NBC |
| [email protected] | HBO |
結果はリストのリストとして返されます:
[["[email protected]", "ABC"], ["[email protected]", "NBC"], ["[email protected]", "NBC"], ["[email protected]", "HBO"]]ネストされたフィールドを取得する例
このメソッドは、ネストされたフィールドを抽出するために使用できます。 取得するフィールドを定義するには、[<1st-level field>,<2nd-level field>...]形式を使用します。
contacts.pluck("email", ["description", "summary"])は次を返します
| summary | |
|---|---|
| [email protected] | First time buyer |
| [email protected] | Referral |
| [email protected] | Recurring customer |
| [email protected] | Recurring customer |
結果はリストのリストとして返されます:
[
["[email protected]", "First time buyer"],
["[email protected]", "Referral"],
["[email protected]", "Recurring customer"],
["[email protected]", "Recurring customer"]
]format_map
入力配列内の各項目にフォーマットを適用して、新しい文字列配列を作成します。 ハッシュの場合は%{field_name}、サブ配列およびスカラー値の場合は%sを使用して、フォーマット文字列内で入力値を参照できます。
利用例
ハッシュの配列
ハッシュの配列でformat_mapを使用できます。 例:
[
{ name: 'Alex', email: '[email protected]', company: 'ACME' },
{ name: 'Hao', email: '[email protected]', company: 'ACME' },
{ name: 'Kai', email: '[email protected]', company: 'STARK' },
{ name: 'Sasha', email: '[email protected]', company: 'ACME' }
].format_map('Name: %{name}, Email: %{email}, Company: %{company}')これは、入力内の各ハッシュに対してフォーマット済み文字列を含む配列を出力します:
[
'Name: Alex, Email: [email protected], Company: ACME',
'Name: Hao, Email: [email protected], Company: ACME',
'Name: Kai, Email: [email protected], Company: STARK',
'Name: Sasha, Email: [email protected], Company: ACME',
]ネストされた配列
ネストされた配列でformat_mapを使用できます。 例:
[
['Alex', '[email protected]', 'ACME'],
['Hao', '[email protected]', 'ACME'],
['Kai', '[email protected]', 'STARK'],
['Sasha', '[email protected]', 'ACME']
].format_map('Name: %s, Email: %s, Company: %s')これは、入力内の各サブ配列に対してフォーマット済み文字列を含む配列を出力します:
[
'Name: Alex, Email: [email protected], Company: ACME',
'Name: Hao, Email: [email protected], Company: ACME',
'Name: Kai, Email: [email protected], Company: STARK',
'Name: Sasha, Email: [email protected], Company: ACME'
]スカラー値の配列
文字列、整数、日付、ブール値などのスカラー値の配列でformat_mapを使用できます。 例:
['Alex', 'Hao', 'Kai'].format_map('Name: %s')これは、入力内の各スカラー値に対してフォーマット済み文字列を含む配列を出力します:
[
'Name: Alex',
'Name: Hao',
'Name: Kai'
]join
リスト内のすべての項目を1つのテキスト文字列に結合します。 各項目の間に区切り文字が配置されます。
構文
List.join(separator)
- List - リストデータ型の入力。
- separator - 項目を結合するときに項目間に追加する文字。 区切り文字が指定されていない場合、リスト項目はそのまま結合されます。
利用例
| Formula | 結果 |
|---|---|
| ["Ms", "Jean", "Marie"].join("-") | "Ms-Jean-Marie" |
| [1,2,3].join("--") | "1--2--3" |
| ["ab", "cd", "ef"].join | "abcdef" |
仕組み
リスト項目は1つのテキスト文字列に結合されます。 区切り文字は各項目の間に追加されます。
区切り文字
区切り引数として文字列をまとめて使用できます(例: ", ")。
["Open","Pending","Closed"].join(", ")は"Open, Pending, Closed"を返します。
関連項目
- split: 指定された文字で文字列を分割し、文字列の配列を返します。
smart_join
リスト要素を文字列に結合します。 結合する前に、空の値とnil値を削除し、空白をトリミングします。
構文
List.smart_join(separator)
- List - リストデータ型の入力。
- separator - 項目を結合するときに項目間に追加する文字。 区切り文字が指定されていない場合、結合文字として空白が使用されます。
利用例
| Formula | 結果 |
|---|---|
| [nil, "", "Hello", " ", "World"].smart_join(" ") | "Hello World" |
| ["111 Vinewood Drive", "", "San Francisco", "CA", "95050"].smart_join(",") | "111 Vinewood Drive, San Francisco, CA, 95050" |
concat
2つのリストを1つのリストに連結します。 ネストされたリストはフラット化されません。
構文
List.concat(list_to_be_joined)
- List - リストデータ型の入力。
- list_to_be_joined - 元のリスト入力と連結するもう一方のリスト。
利用例
| Formula | 結果 |
|---|---|
| ["Hello", "World"].concat(["Workato", "Rocks"]) | ["Hello", "World", "Workato", "Rocks"] |
| ["Hello", "World", ["Sub-array", "Here"]].concat(["Workato", "Rocks"]) | ["Hello", "World", ["Sub-array", "Here"], "Workato", "Rocks"] |
| ["Hello", "World", nil, ["Sub-array", "Here"]].concat(["Workato", "Rocks"]) | ["Hello", "World", nil, ["Sub-array", "Here"], "Workato", "Rocks"] |
reverse
リストの順序を反転します。
構文
List.reverse
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| ["Joe", "Jill", "Joan", "Jack"].reverse | ["Jack", "Joan", "Jill", "Joe"] |
| [100, 101, 102, 103].reverse | [103, 102, 101, 100] |
sum
整数と小数の場合、数値が加算され、合計が得られます。 文字列の場合、文字列が連結されて、より長い文字列が形成されます。
構文
List.sum
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| [1, 2, 3].sum | 6 |
| [1.5, 2.5, 3].sum | 7.0 |
| ["abc", "xyz"].sum | "abcxyz" |
uniq
一意の項目を含むリストを返します。
構文
List.uniq
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| ["joe", "jack", "jill", "joe", "jack"].uniq | ["joe","jack", "jill"] |
| [1, 2, 3, 1, 1, 3].uniq | [1, 2, 3] |
| [1.0, 1.5, 1.0].uniq | [1.0, 1.5] |
flatten
多次元配列(配列の配列)を単一次元配列にフラット化します。
構文
List.flatten
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| [[1, 2, 3], [4, 5, 6]].flatten | [1, 2, 3, 4, 5, 6] |
| [[1, [2, 3], 3], [4, 5, 6]].flatten | [1, 2, 3, 3, 4, 5, 6] |
| [[1, [2, 3], 9], [9, 8, 7]].flatten | [1, 2, 3, 9, 9, 8, 7] |
length
self内の要素数を返します。 リストが空の場合は0を返します。
構文
List.length
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| [ 1, 2, 3, 4, 5 ].length | 5 |
| [{..}, {..}, {..}].length | 3 |
| [" ", nil, "", nil].length | 4 |
| [].length | 0 |
max
配列内の最大値を返します。 数値を比較する場合、最大の数値が返されます。 文字列を比較する場合、最大のASCII値を持つ文字列が返されます。
構文
List.max
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| [-5, 0, 1, 2, 3, 4, 5].max | 5 |
| [-1.5, 1.5, 2, 3, 3.5].max | 3.5 |
| ["cat", "dog", "rat"].max | "rat" |
min
配列内の最小値を返します。 数値を比較する場合、最小の数値が返されます。 文字列を比較する場合、最小のASCII値を持つ文字列が返されます。
構文
List.min
- List - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| [-5, 0, 1, 2, 3, 4, 5].min | -5 |
| [-1.5, 1.5, 2, 3, 3.5].min | -1.5 |
| ["cat", "dog", "rat"].min | "cat" |
compact
配列とハッシュからnil値を削除します。
利用例
| Formula | 結果 |
|---|---|
| ["foo", nil, "bar"].compact | ["foo", "bar"] |
| { foo: 1, bar: nil, baz: 2 }.compact | { foo: 1, baz: 2 } |
条件
blank?
Rubyの慣例に従って、入力が空白とみなされるかどうかをチェックします。 これには以下が含まれます:
- Null値
- 空の入力
- falseのブール値
- 空白文字のみを含む文字列
- 値を持たない数値。NaN(not a number)と呼ばれることがあります。 これは未定義の値、または表現できない値です。 たとえば、ゼロ除算の結果、または欠損値です。
構文
Input.blank?
- Input - 入力データピル。 これは、文字列、数値、日付、日時、ブール値、配列、またはオブジェクトデータ型にできます。
サンプル利用状況
| Formula | 結果 |
|---|---|
| "Any Value".blank? | false |
| 123.blank? | false |
| 0.blank? | false |
| "".blank? | true |
| ' '.blank? | true |
| nil.blank? | true |
| false.blank? | true |
| true.blank? | false |
| [].blank? | true |
| {}.blank? | true |
仕組み
入力がRubyの慣例に従って空白とみなされる場合、Formulaはtrueを返します。 その他のデータの場合は、falseを返します。
関連項目
include?
文字列に特定の部分文字列が含まれるか、リストに要素が含まれるかを確認します。 含まれる場合はtrueを返します。
構文
Input.include?(substring)
- Input - 文字列またはリスト入力。
- substring_or_element - 確認する部分文字列または要素。
利用例
| Formula | 結果 |
|---|---|
| "Partner account".include?("Partner") | true |
| "Partner account".include?("partner") | false |
| ["Hello", "World", ["Sub-array","Here"]"].include?("Hello") | true |
| ["Hello", "World", ["Sub-array","Here"]"].include?(["Sub-array","Here"]) | true |
仕組み
このFormulaは、文字列に特定の部分文字列が含まれるか、リストに特定の要素が含まれるかを確認します。 含まれる場合はtrueを返し、それ以外の場合はfalseを返します。 部分文字列の比較では大文字と小文字が区別され、要素の比較は完全一致です。
この関数はexclude?とは逆の動作をします。 後者は、入力文字列またはリストに指定されたキーワードまたは要素が含まれない場合にのみtrueを返します。
関連項目
- exclude?: 文字列に特定の部分文字列が含まれるか、リストに要素が含まれるかを確認します。 含まれる場合はfalseを返します。
exclude?
文字列に特定の部分文字列が含まれるか、リストに要素が含まれるかを確認します。 含まれる場合はfalseを返します。
構文
Input.exclude?(substring)
- Input - 文字列またはリスト入力。
- substring_or_element - 確認する部分文字列または要素。
利用例
| Formula | 結果 |
|---|---|
| "Partner account".exclude?("Partner") | false |
| "Partner account".exclude?("partner") | true |
| ["Hello", "World", ["Sub-array","Here"]"].include?("Hello") | false |
| ["Hello", "World", ["Sub-array","Here"]"].include?(["Sub-array","Here"]) | false |
仕組み
このFormulaは、文字列に特定の部分文字列が含まれるか、リストに特定の要素が含まれるかを確認します。 含まれる場合はfalseを返し、それ以外の場合はtrueを返します。 部分文字列の比較では大文字と小文字が区別され、要素の比較は完全一致です。
この関数はinclude?とは逆の動作をします。 後者は、入力文字列またはリストに指定されたキーワードまたは要素が含まれる場合にのみtrueを返します。
関連項目
- include?: 文字列に特定の部分文字列が含まれるか、リストに要素が含まれるかを確認します。 含まれる場合はtrueを返します。
present?
このFormulaは入力を確認し、値が存在する場合はtrueを返します。 入力がnil、boolean false、空の文字列、または空のリストの場合、Formulaはfalseを返します。
構文
Input.present?
- Input - 入力データピル。 文字列、数値、日付、またはリストのデータ型を使用できます。
サンプル利用状況
| Formula | 結果 |
|---|---|
| "Any Value".present? | true |
| 123.present? | true |
| 0.present? | true |
| "2017-04-02T12:30:00.000000-07:00".present? | true |
| nil.present? | false |
| "".present? | false |
| [].present? | false |
仕組み
入力がnull、空の文字列、または空のリストの場合、Formulaはfalseを返します。 その他のデータの場合はtrueを返します。
nil値を含むリストの評価
- 空のリストのみがfalseを返します。
[].present? falseを返します。
- nilと空の文字列を含むリストはtrueを返します。
[nil,""].present? trueを返します。
関連項目
presence
データが存在する場合はそのデータを返し、存在しない場合はnilを返します。
構文
Input.presence
- Input - 入力データピル。 文字列、数値、日付、または日時のデータ型を使用できます。
サンプル利用状況
| Formula | 結果 |
|---|---|
| nil.presence | nil |
| "".presence | nil |
| "Any Value".presence | "Any Value" |
| 45.0.presence | 45.0 |
| 0.presence | 0 |
仕組み
入力がnullまたは空の文字列の場合、Formulaはnilを返します。 その他のデータの場合は、元の入力データを返します。
関連項目
変換
次のFormulaを使用すると、配列から他のデータ型にデータを変換できます
to_csv
配列からCSV行を生成します。 これはエスケープを処理します。 Nil値と空の文字列もcsv行内に表されます。
構文
Input.to_csv
- Input - リストデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| ["John Smith", "No-Email", " ", nil, "555-1212"].to_csv | "John Smith,No-Email, ,,555-1212" |
| ["John Smith", "No-Email", " ", nil, 1212].to_csv | "John Smith,No-Email, ,,1212" |
to_json
ハッシュまたは配列をJSON文字列に変換します。
構文
Input.to_json
- Input - 入力データピル。 リストまたはハッシュデータ型を指定できます。
利用例
| Formula | 結果 |
|---|---|
| {"pet" => "cat", "color" => "gray"}.to_json | {"pet":"cat","color":"gray"} |
| ["1","2","3"].to_json | ["1", "2", "3"] |
to_xml
ハッシュまたは配列をXML文字列に変換します。
構文
Input.to_xml
- Input - 入力データピル。 リストまたはハッシュデータ型を指定できます。
利用例
| Formula | 結果 |
|---|---|
| {"name" => "Ken"}.to_xml(root: "user") | <user><name>Ken</name></user> |
| [{"name" => "Ken"}].to_xml(root: "users") | <users><user><name>Ken</name></user></users> |
from_xml
XML文字列をハッシュに変換します。
構文
Input.from_xml
- Input - 入力XMLデータ。
利用例
XML文字列からハッシュへの変換
このXML文字列:
<?xml version=\"1.0\" encoding=\"UTF-8\" ?> <hash><foo type="integer">123</foo></hash>
次のXMLデータを表します。
<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
<hash>
<foo type="integer">123</foo>
</hash>XML string.from_xmlは次のハッシュを返します。
{ "hash":
[ "foo":
[
{ "@type": "integer",
"content!": "1"
}
]
]
}encode_www_form
ハッシュをURLエンコードされたパラメーター文字列に結合します。
構文
Input.encode_www_form
- Input - ハッシュデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| {"apple" => "red green", "2" => "3"}.encode_www_form | "apple=red+green&2=3" |
to_param
URLクエリ文字列として使用する文字列表現を返します。
構文
Input.to_param
- Input - ハッシュデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| {name: 'Jake', age: '22'}.to_param | "name=Jake&age=22" |
keys
入力ハッシュからキーの配列を返します。
構文
Input.keys
- Input - ハッシュデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| {"name" => 'Jake', "age" => '22'}.keys | ["name", "age"] |
values
入力ハッシュから値の配列を返します。
構文
Input.values
- Input - ハッシュデータ型の入力。
利用例
| Formula | 結果 |
|---|---|
| {"name" => 'Jake', "age" => '22'}.values | ["Jake", "22"] |
リストのオペランド
差分(-)
2つの配列の差分を返します。つまり、最初の配列のコピーから、2番目の配列にも存在する項目を除いた新しい配列です。
構文
list - updated_list
-差分/減算オペランドlist- 元のリストupdated_list- 更新済みリスト
利用例
contactsとupdated_contactsという2つの配列があるとします:
contacts = ["Ariel", "Max", "Kai", "Noam", "Tal"]
updated_contacts = ["Ariel", "Max", "Kai", "Lee", "Quinn"]
| Formula | 結果 |
|---|---|
contacts - updated_contacts | ["Noam", "Tal"] |
updated_contacts - contacts | ["Lee", "Quinn"] |
仕組み
このオペランドは、2つの配列間の差分である配列を作成します。 最初の例contacts - updated_contactsは、contactsに存在し、updated_contactsには存在しない項目の配列を返します。 これは重複項目を単に削除するわけではない点に注意することが重要です。操作の順序を逆にすると、異なる結果が得られます。 たとえば、updated_contactsとcontactsの差分を求めると、新しい配列にはupdated_contactsに存在し、contactsには存在しない項目が含まれます。
関連項目
- where: 特定の条件を満たすリスト項目のサブセットを返します。
whereを使用して2つのリストを比較するには、notオペランドのチェーンの例を参照してください。
和集合(&)
Workatoでは、配列を直接操作するための和集合(&)オペランドはサポートされていませんが、concatとuniqのFormulaを組み合わせることで同様の結果を得ることができます。
構文
list.concat(updated_list).uniq
list- リストconcat- 2つのリストを1つのリストに連結しますupdated_list- 更新済みリストuniq- 一意の値を含むリストを返します
利用例
| Formula | 結果 |
|---|---|
contacts.concat(updated_contacts).uniq | ["Ariel", "Kai", "Lee", "Max", "Noam", "Quinn", "Tal"] |
仕組み
concatは2つのリストを1つのリストに連結し、uniqは一意の項目を含むリストを返します。 2つのFormulaを組み合わせることで、2つのリストを結合し、出現する可能性のある重複項目を削除できます。
Last updated: