Google スプレッドシートアクション - Search rows using query (クエリーを使用した行の検索) (旧バージョン)

: この記事は、近日中に廃止される Google Sheets API v3 を使用した、旧バージョンの Search rows (行の検索) アクションに関するものです。代わりに、こちらの新しい Search rows アクションを使用することをお勧めします。

Search rows アクションを使用すると、検索クエリーを使用して特定の行を取得できます。

このアクションは多くの場合、Update row アクションとともに使用されます。そうすることで、更新したい行をまず検索してから、それらの行を更新できます。

このアクションの使用方法

Google シートの設定

シート内のカスタムデータを取得するには、まず以下のスクリーンショットに示すように、シートに少なくとも1つのヘッダー行と1つのデータ行が含まれている必要があります。

Google シートのサンプル1行のヘッダー行と1行のデータ行を含む Google シートのサンプル

Search rows アクションの設定

このアクションを設定するには、スプレッドシートと、検索対象のシートを選択する必要があります。

未設定未設定の検索アクション

設定済みスプレッドシートとシートが選択された設定済みの Search rows アクション

検索クエリーの構造

以下のシートで検索を実行すると想定しましょう。

検索対象の Google シートのサンプル

API で処理できるようにするには、検索クエリーをある決まった形式の構造にする必要があります。たとえば、年齢が30歳以上、シャツのサイズが "M" である "Jennifer Avery" という名前の出席者を検索する場合、次のようなクエリーを入力します。

ruby
name = "jennifer avery" and age > 30 and shirtsize = "M"

クエリーを作成する際の一般的な注意事項を以下に示します。

  • 列名 列名は1つの単語である必要があります。列名に複数の単語が含まれているとしても、スペースを削除すれば済みます。たとえば、"Shirt size" 列のラベルは "shirtsize" になります。

  • クエリーでは大文字と小文字は区別されない 列の名前または値では大文字と小文字を区別する必要はありません。

  • 演算子 一般的な演算子は、等しい (=)、より大きい (>)、以上 (>=)、より小さい (<)、以下 (<=) です。これらすべての演算子は、数字および日時のタイムスタンプに使用できます (年齢を比較する場合など)。 等しい (=) のみを文字列に使用できます (サンプルのシート内で名前やシャツのサイズを比較する場合など)。この場合では完全な一致のみが取得されます。

  • AND および ORAND および OR を使用して、さまざまなクエリーを作成できます。これらは組み合わせて使用し、括弧を使って演算の順序を示すこともできます (括弧内にあるものが最初に評価されます)。 たとえば、age < 35 or age > 50 and name = "jennifer avery" は何も返しませんが、age < 35 or (age > 50 and name = "jennifer avery") は3行目と5行目を返します。

クエリーエラー

クエリーの構造が正しくないか、演算子が間違っている場合 (LIKE または CONTAINS などのサポートされていない演算子を使用しようとした場合など)、Search rows アクションは以下のエラーメッセージを返して失敗します。

失敗したジョブ正しくない検索クエリーにより失敗したジョブ

Search rows アクションのテスト

正しく設定されていれば、Search rows アクションは検索条件に一致する行のリストを返すはずです。このケースでは、一致する行は1つのみとなっています。

検索の入力ジョブの詳細ページに表示される Search rows アクションの入力

出力ジョブの詳細ページの [Output] タブに表示される、Search rows アクションから取得された結果

この特定のクエリーが機能することがわかりました。次に、Salesforce に新しい連絡先が追加されるたびに Jennifer Avery という名前のユーザーを検索しなくてもよいようにするため、これらのハードコードされた値を変数 (Workato ではデータツリーのピルと呼ばれている) で置き換える必要があります。次のシナリオにおいて、これらのハードコードされた値をピルで置き換えます。

サンプルのシナリオ

このケースでは、Salesforce 内の新規または更新された連絡先を、この Google シートに移そうとしていると想定しましょう。 サンプルの Google シート

以下の図は、あらかじめ準備しておいたレシピとデータマッピングを示しています。これによって、Google スプレッドシート内の適切な行が検索で見つかるようになっており、Salesforce からの新規データが Google スプレッドシート内の項目に対応付けられています。

完成済みレシピ新規または更新された Salesforce の連絡先を選択された Google シートへと移動させる完成済みレシピ

行の検索Search rows アクションを使用してシート内の行をクエリーで検索。ここでは、Salesforce の連絡先の Email と一致する email 列を持つ Google スプレッドシート行を検索している。

データツリーSearch rows アクションの出力からこの Update row アクションに Row ID を渡し、更新する必要のある行を示す。その後、Salesforce new/updated Contact からのデータピルを Update row アクションにマッピングする。

適切なデータツリーからデータを取得するように注意してください。よくある間違いは、Search rows アクションからのピルを使用することです。そうすると、Google スプレッドシートの行から既存のデータを取り、それをまったく同じ行に再び書き込むことになります。それは本質的に何も行っていないことになり、役に立ちません。

レシピの実行

トリガーとアクションの設定が完了したので、いよいよレシピを実行してみましょう。

設定済みのレシピテスト用に設定済みのレシピ

Salesforce の連絡先の名前を Anna Sharpay から Anna Mccoy に更新してみます。メールアドレスが anna@workato.com であることに注意してください。

更新された Salesforce の連絡先

ジョブレポートを見て、レシピでこの変更がどのように取得されたかを確認しましょう。

トリガーデータ更新された連絡先をトリガーが取得 (ジョブの詳細ページの [Output] タブに表示)

対応する行対応する行2Search rows アクションがメールアドレス anna@workato.com を見つけようと試みる。1行を検出し、その Row IDUpdate row アクションに渡す。その後、Update row アクションが名前を Anna Mccoy に更新する。

レシピが行を更新した後の結果のシートは以下のようになります。名前が Anna Sharpay から Anna Mccoy に変更されていることに注目してください。 サンプルの Google シート元のシートUpdate row更新されたシート

Last updated: