# Salesforce のトリガー/アクション

# Salesforce トリガー

Workato において、トリガーとはレシピを開始させるために設定する条件のことをいいます。Salesforce コネクターのトリガーは、どれも オブジェクト を取り扱います。トリガーの名前は、レシピが実行されるためにどのようなイベントが発生しなければならないかを的確に表しています。Salesforce コネクターは、次のようないくつかのトリガーの種類をサポートしています。

# トリガーの設定

以下の例では、簡単なポーリングトリガーを設定していきます。ポーリングトリガーは、接続している Salesforce アカウントを5分または10分ごと (この間隔は Workato のプランによって決まります) にチェックし、新しいオブジェクトや更新されたオブジェクトがないか確かめます。

Salesforce コネクターのトリガーは、どれも オブジェクト を取り扱います。トリガーの名前は、レシピが実行されるためにどのようなイベントが発生しなければならないかを的確に表しています。ここでの「オブジェクト」という言葉は、Salesforce 内とまったく同じ意味で使われており、リードや商談、取引先、あるいはユーザーが自分の組織のために作成したカスタムオブジェクトなどを指します。ユーザーは [Object] フィールドのドロップダウンリストをクリックするだけで、レシピと接続した Salesforce インスタンスに関係するすべてのオブジェクトを確認できます。たとえば、 「新規/更新されたレコード」 トリガーを使用し、オブジェクトとして [Lead] を選択したとします。すると、新しいリードが作成または更新されるたびにレシピがトリガーされるようになります。

新規/更新されたリードトリガー 新規/更新されたリードがあるたびにレシピがトリガーされるようになった

# 入力項目 Fields

Fields (項目) リストの入力項目では、ユーザーがレシピで使用したい項目を選択できます。これにより、レシピはそうした一部の項目への変更のみから影響を受けるようになり、スキーマの変更から受ける影響を最小限に抑えることができます。

Fields リストを使用すると、以下のようなメリットがあります。

  1. レシピのパフォーマンスが向上する
  2. 有用なデータピルのみに絞ることでデータツリーが小さくなり、レシピの利便性が向上する
  3. Salesforce オブジェクトのスキーマ変更からレシピが受ける影響を最小限に抑えられる

# Fields リストの使用方法

Salesforce のトリガーとアクションには、Fields (項目) という任意の入力項目があります。これはレシピで使用したいデータ項目を選択するための複数選択フィールドです。これが空白のままである場合、Salesforce のトリガー/アクションは、デフォルトではデータツリー内のすべてのデータ項目を取得します。

未設定の項目セレクター。 未設定の項目セレクター。デフォルトでは、取引先のすべての項目がデータツリーに取得される。

選択したオブジェクトのすべてのデータ項目が Fields リストで利用できます。

ベースオブジェクトの利用可能な項目 デフォルトでは、ユーザーが選択したオブジェクトで利用可能なすべてのデータ項目が項目セレクターで表示される

これらの項目の何らかのサブセットを選択すると、データツリーが再生成され、選択したデータピルのみが表示されるようになります。

設定済みのベースオブジェクトの項目セレクター 項目セレクターの設定 - 項目が選択されるとデータツリーが再生成される

Salesforce では、関連するオブジェクトのデータも取得するように選択できます。たとえば Salesforce 内の新規の商談がトリガーである場合、その商談と関連する Salesforce の取引先に関わるデータも取得することが可能です。新規のケースがトリガーである場合は、商談と関連する Salesforce の取引先責任者、リード、取引先に関わるデータも取得することができます。選択する項目を Workato に指示するには、まず関心のある関連オブジェクトを選択し、次にその関連オブジェクトの項目のうちで関心のあるものを選択します。

以下の例では、まず第一のベースオブジェクトとして account (取引先) を選択し、次に結合オブジェクトとして parent account (親取引先) を選択しています。Fields の複数選択リストには、親取引先に属する項目も即座に入力されます。同様に、Fields リストが設定されていない場合は、accountparent account のすべての項目が Salesforce から取得されます。

結合オブジェクトの利用可能な項目 関連する結合オブジェクトを選択すると、その結合オブジェクトの利用可能な項目が表示される

選択したベースオブジェクトとそれに関連する結合オブジェクトのすべてのデータ項目が、Fields リストで利用可能になります。それらの項目の何らかのサブセットを選択するとデータツリーが再生成され、選択したデータピルのみが表示されるようになります。

設定済みの結合オブジェクトの項目セレクター ベースオブジェクトとそれに関連する結合オブジェクトのデータ項目を含む項目セレクターの設定 - 何らかの項目が選択されるとデータツリーが再生成される

使用したい項目にデータツリーを限定することで、レシピが Salesforce のスキーマ変更から受ける影響が軽減されます。

# Salesforce の削除されたレコードトリガー

削除されたレコードトリガーを使用すると、レコードが削除されたときにレシピをトリガーできます。オブジェクトピックリストは、削除後も (通常15日間にわたり) Salesforce に保存されている、論理的に削除されたレコードのみを取得します。

必要なオブジェクトがピックリストで見つからない場合、そのオブジェクトのレコードは削除されたとき、直ちに物理的に削除されている可能性があります (Salesforce はそのようなレコードをごみ箱に保存しません)。そうしたオブジェクトは、削除されたオブジェクトトリガーでサポートされていません。

この問題を解決するには、レコードの設定に応じて、レコードが論理的に削除される (そして削除済みアイテムリスト/ごみ箱に15日間置かれる) ようにオブジェクトを設定するとよいでしょう。連結レコード (オブジェクト間に多対多のリレーションを作るレコード) は通常、物理的に削除され、論理削除の設定はできないことに注意してください。論理/物理削除についてより詳しい情報が必要である場合は、Salesforce の管理者に確認してください。

# Salesforce の作成/更新/検索/アップサートアクション

ご使用の Salesforce アカウント上に存在するオブジェクトの項目についてよく知っていれば、Workato で Salesforce アクションを使用する際も、非常に簡単に操作できるでしょう。

作成/更新/検索アクションで使用するオブジェクトを選択すると、そのオブジェクトに関連するすべての項目がアクション内に表示されます。たとえば、 [Lead] を選択した場合、電話番号、メールアドレス、リードステータスといった項目が表示されます。そうなれば、あとは作成/更新アクション内で入力したい関連フィールドや、検索アクションで検索したいフィールドに、データピルをドラッグ&ドロップするだけです。

# Salesforce の添付ファイル

# アップロード

Workato を使って Salesforce に添付ファイルをアップロードするには、 Create Object アクションを使用し、 [Object] フィールド以下で [Attachment] を選択します。しかしその前に、Salesforce にアップロードするファイルをダウンロードするステップが必要です。そのためには、 ファイルのダウンロード URL の取得Box アクションを使用するとよいでしょう。Workato にファイルをダウンロードする方法については、こちらの例 (opens new window)を参照してください。

# ダウンロード

Salesforce から 添付ファイルをダウンロードするには、 Download file アクションを使用するとよいでしょう。 file ID は、以前のステップ (通常は Get object details ステップ) から取得する必要があります。そのステップが適切に設定されると、レシピの他のステップにおいて添付ファイルをデータピルとして使用できるようになり、たとえば Box コネクターの Upload file アクションを使用することができます。

# Fields リストでスキーマエラーを防止

レシピで Salesforce トリガー/アクションを使用する際、デフォルトでは、オブジェクトのすべての項目 (標準およびカスタム項目) が Salesforce に対してリクエストされます。このリクエストは、 たとえそれらの項目がレシピで使用されていなくても 行われます。

Salesforce 管理者が Salesforce オブジェクトのスキーマを変更した場合 (たとえばオブジェクトに含まれる項目を削除した場合)、レシピは、そのオブジェクトに関わる API リクエストを Salesforce に対して行うときにエラーをスローするようになります。これは、その削除された項目がまだレシピから Salesforce に対してリクエストされており、それが無効な要求であるためです。一方、Salesforce オブジェクトに項目が追加された場合は、Workato はそうした追加項目をリクエストしないだけなので、レシピのエラーが発生しません。

以上のような Salesforce と Workato のスキーマの差異は、スキーマを最新の状態に更新することで解決できます。しかし、頻繁なスキーマ変更が予想される場合は、入力項目 Fields を利用することで、Salesforce にリクエストする項目を制御するとよいでしょう。そうすれば、レシピと関係のないスキーマ変更によってレシピが動かなくなったり、エラーに遭遇したりすることがなくなります。


Last updated: 2023/8/31 1:07:14