Formulaのトラブルシューティング
このガイドでは、Workatoレシピで発生する特定の問題の解決に役立つ情報を提供します。 各シナリオでは、Formulaを使用してデータを効果的に変換、検証、処理する方法を示します。
複数行のテキストをカンマ区切り文字列に変換
Salesforceやテキストエクスポートなど、一部のシステムでは、値を区切るために改行(\n)を含むデータが保存されます。 ターゲットシステムでは、多くの場合、データを単一のカンマ区切り形式にする必要があります。
解決策
複数行のテキスト入力をカンマ区切り文字列に変換するには、次の手順を実行します。
複数行のテキスト入力を受け入れるフィールドがあるレシピステップに移動します。
複数行のテキストを変換するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、改行をカンマに置き換えます。
<TextField>.gsub("\n",",")<TextField>を関連するデータピルまたは静的な複数行テキストに置き換えます。
カンマ区切り文字列内の重複を削除
データソースでは、Apple, Banana, Appleのように、重複する値を含む文字列が生成されることがよくあります。 これらの重複は、一意の値を必要とするダウンストリームシステムでエラーや不整合を引き起こす可能性があります。
解決策
カンマ区切り文字列から重複を削除するには、次の手順を実行します。
カンマ区切り文字列を受け入れるフィールドがあるレシピステップに移動します。
重複をクリーンアップする必要があるフィールドでFormulaモードを有効にします。
次のFormulaを入力して、文字列を配列に分割し、重複を削除して、クリーンアップされた文字列として再結合します。
<TextField>&.split(“,”)&.uniq&.join(", ")<TextField>を関連するデータピルまたは静的文字列に置き換えます。
カンマ区切り文字列を配列に分割
一部のシステムでは、データがカンマ区切り文字列として提供されます。 ターゲットシステムでは、多くの場合、複数選択リストフィールドやその他の処理ステップのために、このデータを個別の項目として必要とします。
解決策
カンマ区切り文字列を配列に分割するには、次の手順を実行します。
カンマ区切り文字列を受け入れるフィールドがあるレシピステップに移動します。
文字列を分割する必要があるフィールドでFormulaモードを有効にします。
次のFormulaを入力して、文字列を配列に分割します。
<TextField>.split(",")<TextField>を関連するデータピルまたは静的文字列に置き換えます。
配列を改行区切り文字列に結合
一部のシステムでは、データが文字列の配列として提供されます。 ターゲットシステムでは、多くの場合、テキストフィールドやカスタムログのために、このデータを改行区切り形式にする必要があります。
解決策
文字列の配列を改行区切り形式に結合するには、次の手順を実行します。
配列入力を受け入れるフィールドがあるレシピステップに移動します。
配列を変換するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、配列を改行区切り文字列に結合します。
<Array>.join("\n")<Array>を関連するデータピルまたは静的配列に置き換えます。
配列をカンマ区切り文字列に変換
動的フィールドでは、多くの場合、値の配列としてデータが返されます。 テキスト入力を必要とするターゲットシステムでは、多くの場合、このデータを単一のカンマ区切り文字列にする必要があります。
解決策
文字列の配列を単一のカンマ区切りリストに変換するには、次の手順を実行します。
配列入力を受け入れるフィールドがあるレシピステップに移動します。
配列を変換するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、配列をカンマ区切り文字列に変換します。
<Array>.join(", ")<Array>を関連するデータピルまたは静的配列に置き換えます。
日付文字列を日付形式に変換
一部のソースでは、MM/DD/YYYYのように、日付が文字列として提供されます。 ターゲットシステムでは、多くの場合、計算や比較のために、これらの日付を適切な形式にする必要があります。
解決策
日付文字列を適切な日付形式に変換するには、次の手順を実行します。
日付入力を受け入れるフィールドがあるレシピステップに移動します。
日付文字列を変換するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、文字列を日付形式に変換します。
<Date>.to_date(format:“MM/DD/YYYY”)<Date>を関連するデータピルまたは静的な日付文字列に置き換えます。 format: "MM/DD/YYYY"内の形式が入力文字列の実際の構造と一致していることを確認します。
配列から最初の項目を抽出
一部のシステムでは、値が1つしか含まれていない場合でも配列が返されます。 ターゲットシステムでは、多くの場合、以降の処理のため、またはスタンドアロン値として、最初の項目のみが必要です。
解決策
配列から最初の値を抽出するには、次の手順を実行します。
配列入力を受け入れるフィールドがあるレシピステップに移動します。
最初の項目を抽出するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、配列から最初の値を抽出します。
<Array>.first<Array>を関連するデータピルまたは静的配列に置き換えます。
フィールドの長さに合わせて文字列を切り詰め
ターゲットシステムでは、255文字など、厳密な文字数制限が適用されることがよくあります。 これらの制限を超える文字列は、更新中にエラーを引き起こす可能性があります。
解決策
フィールドの長さ制限に合わせて文字列を切り詰めるには、次の手順を実行します。
テキスト入力を受け入れるフィールドがあるレシピステップに移動します。
文字列を切り詰めるフィールドでFormulaモードを有効にします。
次のFormulaを入力して、文字列を切り詰めます。
<Text>.slice(0, 255)<Text>を関連するデータピルまたは静的文字列に置き換え、255をターゲットシステムの文字数制限に合わせて調整します。
フィールドの長さを検証
Salesforceなど、一部のシステムでは、商談IDのようなフィールドが特定の長さと一致している必要があります。 長さを検証することで、以降の処理の前にデータの整合性を確保できます。
解決策
フィールドの長さを検証するには、次の手順を実行します。
レシピにIF条件ステップを追加します。
フィールドの長さを確認するデータフィールドでFormulaモードを有効にします。
次のFormulaを入力して、フィールドの長さを計算します。
<Field>.length<Field>を関連するデータピルまたは静的文字列に置き換えます。
フィールドの長さをターゲット値と比較するように条件を設定します。 例:
- Salesforce商談IDを検証するには等しい
18に設定します。 - フィールドが空でないことを確認するにはより大きい
0に設定します。
日付を別の形式に変換
一部のシステムでは、ログ、レポート、またはユーザー向けフィールドのために、日付を特定の文字列形式にする必要があります。 システムまたは対象ユーザーのニーズを満たすために、ソースの日付を互換性のある形式に変換します。
解決策
日付を別の形式に変換するには、次の手順を実行します。
日付入力を受け入れるフィールドがあるレシピステップに移動します。
日付の形式を変更するフィールドでFormulaモードを有効にします。
次のFormulaを入力して、日付の形式を変更します。
<Date>.strftime("%A, %B %d")<Date>を関連するデータピルまたは静的な日付文字列に置き換え、形式文字列("%A, %B %d")を目的の出力に合わせて調整します。 たとえば、<Date>に2025-01-05(YYYY-MM-DD形式)が含まれている場合、FormulaはMonday, January 05を出力します。
さまざまな形式の例
strftimeメソッドを使用すると、さまざまなユースケースに合わせて日付形式をカスタマイズできます。 次の表に、一般的な日付形式と対応する出力を示します。
| 形式 | Formula | 2025-01-05の出力 |
|---|---|---|
| 完全な日付 | <Date>.strftime("%A, %B %d") | Monday, January 05 |
| 短縮日付 | <Date>.strftime("%b %d, %Y") | Jan 05, 2025 |
| ISO形式 | <Date>.strftime("%Y-%m-%d") | 2025-01-05 |
| ヨーロッパ形式 | <Date>.strftime("%d/%m/%Y") | 05/01/2025 |
| 時刻付き日付 | <Date>.strftime("%B %d, %Y at %H:%M") | January 05, 2025 at 00:00 |
条件に基づいてフィールドに値を入力
一部のシステムでは、設定された条件に基づいてフィールドに特定の値を反映する必要があります。 ダウンストリーム処理の条件を満たすように、フィールドの値を動的に調整します。
解決策
条件に基づいてフィールドに値を入力するには、次の手順を実行します。
フィールドが入力を受け入れるレシピ内のステップに移動します。
条件を適用するフィールドでFormulaモードを有効にします。
フィールドに次のFormulaを入力します。
<Field>&.scan(/(ValueToSearchFor)/).present? ? "ValueIfTrue" : "ValueIfFalse"Formula内の次のプレースホルダーを置き換えます。
<Field>: 入力フィールドを表すデータピルまたは静的値に置き換えます。ValueToSearchFor: フィールド内で検索する語句に置き換えます。ValueIfTrue: 条件がtrueの場合に入力する値に置き換えます。ValueIfFalse: 条件がfalseの場合に入力する値に置き換えます。
Last updated: