class_docstr: Interact with Google Ads API.
  
  This hook requires two connections:
  
  - gcp_conn_id - provides service account details (like any other GCP connection)
  - google_ads_conn_id - which contains information from Google Ads config.yaml file
      in the ``extras``. Example of the ``extras``:
  
      .. code-block:: json
  
          {
              "google_ads_client": {
                  "developer_token": "{{ INSERT_TOKEN }}",
                  "json_key_file_path": null,
                  "impersonated_email": "{{ INSERT_IMPERSONATED_EMAIL }}"
              }
          }
  
      The ``json_key_file_path`` is resolved by the hook using credentials from gcp_conn_id.
      https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-service
  
  .. seealso::
      For more information on how Google Ads authentication flow works take a look at:
      https://developers.google.com/google-ads/api/docs/client-libs/python/oauth-service
  
  .. seealso::
      For more information on the Google Ads API, take a look at the API docs:
      https://developers.google.com/google-ads/api/docs/start
  
  :param gcp_conn_id: The connection ID with the service account details.
  :param google_ads_conn_id: The connection ID with the details of Google Ads config.yaml file.
  :param api_version: The Google Ads API version to use.
docstr: Pull data from the Google Ads API.
  
  Native protobuf message instances are returned (those seen in versions
  prior to 10.0.0 of the google-ads library).
  
  This method is for backwards compatibility with older versions of the
  google_ads_hook.
  
  Check out the search_proto_plus method to get API results in the new
  default format of the google-ads library since v10.0.0 that behave
  more like conventional python object (using proto-plus-python).
  
  :param client_ids: Google Ads client ID(s) to query the API for.
  :param query: Google Ads Query Language query.
  :param page_size: Number of results to return per page. Max 10000.
  :return: Google Ads API response, converted to Google Ads Row objects.
docstr_tok: ["Pull","data","from","the","Google","Ads","API",".","Native","protobuf","message","instances","are","returned","(","those","seen","in","versions","prior","to","10.0.0","of","the","google-ads","library",")",".","This","method","is","for","backwards","compatibility","with","older","versions","of","the","google_ads_hook",".","Check","out","the","search_proto_plus","method","to","get","API","results","in","the","new","default","format","of","the","google-ads","library","since","v10.0.0","that","behave","more","like","conventional","python","object","(","using","proto-plus-python",")",".",":","param","client_ids",":","Google","Ads","client","ID","(","s",")","to","query","the","API","for",".",":","param","query",":","Google","Ads","Query","Language","query",".",":","param","page_size",":","Number","of","results","to","return","per","page",".","Max","10000.",":","return",":","Google","Ads","API","response",",","converted","to","Google","Ads","Row","objects","."]
code: def search(
      self,
      client_ids: list[str],
      query: str,
      page_size: int = 10000,
      **kwargs,
  ) -> list[GoogleAdsRow]:
      """Pull data from the Google Ads API.
  
      Native protobuf message instances are returned (those seen in versions
      prior to 10.0.0 of the google-ads library).
  
      This method is for backwards compatibility with older versions of the
      google_ads_hook.
  
      Check out the search_proto_plus method to get API results in the new
      default format of the google-ads library since v10.0.0 that behave
      more like conventional python object (using proto-plus-python).
  
      :param client_ids: Google Ads client ID(s) to query the API for.
      :param query: Google Ads Query Language query.
      :param page_size: Number of results to return per page. Max 10000.
      :return: Google Ads API response, converted to Google Ads Row objects.
      """
      data_proto_plus = self._search(
          client_ids, query, page_size, **kwargs
      )
      data_native_pb = [row._pb for row in data_proto_plus]
  
      return data_native_pb
  
imports: from __future__ import annotations
  from functools import cached_property
  from tempfile import NamedTemporaryFile
  from typing import IO, TYPE_CHECKING, Any
  from google.ads.googleads.client import GoogleAdsClient
  from google.ads.googleads.errors import GoogleAdsException
  from google.auth.exceptions import GoogleAuthError
  from airflow.exceptions import AirflowException
  from airflow.hooks.base import BaseHook
  from airflow.providers.google.common.hooks.base_google import get_field
label_desc: Use image node_id 2 for calling the GoogleAdsHook obj's underlying member method code with example usage: obj.search(client_ids, query, page_size) and returns: data_native_pb