

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 連線至 Google Ads
<a name="connecting-to-googleads"></a>

 Google Ads API 是 Google Ads 的程式設計介面，用於管理大型或複雜的 Google Ads 帳戶和行銷活動。如果您是 Google Ads 使用者，您可以 AWS Glue 連線到 Google Ads 帳戶。然後，您可以在 ETL 任務中使用 Google Ads 作為資料來源。執行這些任務以在 Google Ads AWS 和服務或其他支援的應用程式之間傳輸資料。

**Topics**
+ [AWS Glue 支援 Google Ads](googleads-support.md)
+ [包含用於建立和使用連線的 API 操作的政策](googleads-configuring-iam-permissions.md)
+ [設定 Google Ads](googleads-configuring.md)
+ [設定 Google Ads 連線](googleads-configuring-connections.md)
+ [從 Google Ads 實體中讀取](googleads-reading-from-entities.md)
+ [Google Ads 連線選項](googleads-connection-options.md)
+ [建立 Google Ads 帳戶](googleads-create-account.md)
+ [限制](googleads-connector-limitations.md)

# AWS Glue 支援 Google Ads
<a name="googleads-support"></a>

AWS Glue 支援 Google Ads，如下所示：

**支援作為來源？**  
是。您可以使用 AWS Glue ETL 任務從 Google Ads 查詢資料。

**支援作為目標？**  
否。

**支援的 Google Ads API 版本**  
v18

# 包含用於建立和使用連線的 API 操作的政策
<a name="googleads-configuring-iam-permissions"></a>

 下列範例政策說明建立和使用 連線所需的 AWS 許可。如果您要建立新角色，請建立包含下列項目的政策：

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "glue:ListConnectionTypes",
        "glue:DescribeConnectionType",
        "glue:RefreshOAuth2Tokens",
        "glue:ListEntities",
        "glue:DescribeEntity"
      ],
      "Resource": "*"
    }
  ]
}
```

------

也可使用下列受管 IAM 政策來允許存取權：
+  [ AWSGlueServiceRole ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/service-role/AWSGlueServiceRole) – 准許存取各種 AWS Glue 程序代表您執行所需的資源。這些資源包括 AWS Glue Amazon S3、IAM、CloudWatch Logs 和 Amazon EC2。如果您遵循此政策中指定資源的命名慣例，則 AWS Glue 程序具有必要的許可。此政策通常會連接至定義編目程式、工作和開發端點時所指定的角色。
+  [ AWSGlueConsoleFullAccess ](https://console.aws.amazon.com/iam/home#policies/arn:aws:iam::aws:policy/AWSGlueConsoleFullAccess) – 當政策連接到的身分使用 AWS 管理主控台時，授予 AWS Glue 資源的完整存取權。如果您依照此政策中指定的資源命名慣例，使用者就能擁有完整的主控台功能。此政策通常連接到 AWS Glue 主控台的使用者。

# 設定 Google Ads
<a name="googleads-configuring"></a>

您必須先符合下列要求，才能使用 從 Google Ads AWS Glue 傳輸：

## 最低需求
<a name="googleads-configuring-min-requirements"></a>
+  您有一個具有電子郵件和密碼的 Google Ads 帳戶。如需有關建立帳戶的詳細資訊，請參閱[建立 Google Ads 帳戶](googleads-create-account.md)。
+  您的 Google Ads 帳戶已啟用 API 存取。所有 Google Ads API 的使用皆免費。
+  您的 Google Ads 帳戶可讓您安裝連線的應用程式。如果無法存取此功能，請聯絡您的 Google Ads 管理員。

 如果您符合這些要求，就可以 AWS Glue 連線到 Google Ads 帳戶。

# 設定 Google Ads 連線
<a name="googleads-configuring-connections"></a>

 Google Ads 支援 OAuth2 的 `AUTHORIZATION_CODE` 授權類型。

 此授權類型被視為「三條腿的」OAuth，因為其依賴將使用者重新導向至第三方授權伺服器來驗證使用者。在透過 AWS Glue 主控台建立連線時使用。 AWS Glue 主控台會將使用者重新導向至 Google Ads，使用者必須在其中登入 AWS Glue ，並允許請求的許可存取其 Google Ads 執行個體。

 使用者可以選擇在 Google Ads 中建立自己的連線應用程式，並在透過 AWS Glue 主控台建立連線時提供自己的用戶端 ID 和用戶端秘密。在此案例中，它們仍會重新導向至 Google Ads 以登入並授權 AWS Glue 存取其資源。

 此授權類型會產生重新整理字符和存取字符。存取字符是短期存留的，可以使用重新整理字符自動重新整理，而無需使用者互動。

 如需詳細資訊，請參閱[有關為授權碼 OAuth 流程建立連線應用程式的公有 Google Ads 文件](https://developers.google.com/workspace/guides/create-credentials)。

若要設定 Google Ads 連線，請執行以下操作：

1.  在 AWS Secrets Manager 中，使用下列詳細資訊建立秘密。必須為 AWS Glue中的每個連線建立機密。

   1.  對於 AuthorizationCode 授權類型：
      +  對於客戶管理的連線應用程式，機密應包含以 `USER_MANAGED_CLIENT_APPLICATION_CLIENT_SECRET` 作為金鑰的連線應用程式消費者機密。

1. 在 AWS Glue Glue Studio 中，依照下列步驟在 **Data Connections** 下建立連線：

   1. 選取**連線類型**時，選取 Google Ads。

   1. 提供您要連線的 Google Ads 的 `developer token`。

   1. 如果您想要以管理員身分登入，請提供 Google Ads 的 `MANAGER ID`。

   1.  選取 AWS Glue 可以擔任並具有下列動作許可的 IAM 角色：

------
#### [ JSON ]

****  

      ```
      {
        "Version":"2012-10-17",		 	 	 
        "Statement": [
          {
            "Effect": "Allow",
            "Action": [
              "secretsmanager:DescribeSecret",
              "secretsmanager:GetSecretValue",
              "secretsmanager:PutSecretValue",
              "ec2:CreateNetworkInterface",
              "ec2:DescribeNetworkInterfaces",
              "ec2:DeleteNetworkInterface"
            ],
            "Resource": "*"
          }
        ]
      }
      ```

------

   1.  選取您要用於此連線`secretName`的 AWS Glue ，以放置字符。

   1.  如果想要使用您的網路，請選取網路選項。

1.  授予與您的 AWS Glue 任務相關聯的 IAM 角色讀取 的許可`secretName`。

# 從 Google Ads 實體中讀取
<a name="googleads-reading-from-entities"></a>

 **先決條件** 
+  您想要從中讀取的 Google Ads 物件。請參閱以下支援的實體表格，以檢查可用實體。

 **支援的實體** 


| 實體 | 可以篩選 | 支援限制 | 支援排序依據 | 支援選取 \$1 | 支援分區 | 
| --- | --- | --- | --- | --- | --- | 
| 廣告群組廣告 | 是 | 是 | 是 | 否 | 是 | 
| 廣告群組 | 是 | 是 | 是 | 否 | 是 | 
| 行銷活動預算 | 是 | 是 | 是 | 是 | 是 | 
| 帳戶預算 | 是 | 否 | 是 | 是 | 否 | 
| 行銷活動 | 是 | 是 | 是 | 是 | 是 | 
| 帳戶 | 是 | 否 | 是 | 否 | 否 | 

 **範例** 

```
googleAds_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16"
    }
```

 **Google Ads 實體和欄位詳細資訊** 


| 實體 | 欄位 | 資料類型 | 支援的運算子 | 
| --- | --- | --- | --- | 
| 帳戶 | resourceName | String | \$1=, = | 
| 帳戶 | callReportingEnabled | Boolean | \$1=, = | 
| 帳戶 | callConversionReportingEnabled | Boolean | \$1=, = | 
| 帳戶 | callConversionAction | String | \$1=, = | 
| 帳戶 | conversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | crossAccountConversionTrackingId | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | payPerConversionEligibilityFailureReasons | 清單 |  | 
| 帳戶 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | currencyCode | String | \$1=, =, LIKE | 
| 帳戶 | timeZone | String | \$1=, =, LIKE | 
| 帳戶 | autoTaggingEnabled | Boolean | \$1=, = | 
| 帳戶 | hasPartnersBadge | Boolean | \$1=, = | 
| 帳戶 | manager | Boolean | \$1=, = | 
| 帳戶 | testAccount | Boolean | \$1=, = | 
| 帳戶 | date | Date | BETWEEN, =, <, >, <=, >= | 
| 帳戶 | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | acceptedCustomerDataTerms | Boolean |  | 
| 帳戶 | conversionTrackingStatus | String | \$1=, =, LIKE | 
| 帳戶 | enhancedConversionsForLeadsEnabled | Boolean |  | 
| 帳戶 | googleAdsConversionCustomer | String |  | 
| 帳戶 | status | String | \$1=, = | 
| 帳戶 | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| 帳戶 | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 帳戶 | conversionsByConversionDate | Double | \$1=, =, <, > | 
| 帳戶 | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 帳戶 | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| 帳戶 | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | 點按數 | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | costPerAllConversions | Double | \$1=, =, <, > | 
| 帳戶 | costPerConversion | Double | \$1=, =, <, > | 
| 帳戶 | 轉換 | Double | \$1=, =, <, > | 
| 帳戶 | absoluteTopImpressionPercentage | Double | \$1=, =, <, > | 
| 帳戶 | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | topImpressionPercentage | Double | \$1=, =, <, > | 
| 帳戶 | averageCpc | Double | \$1=, =, <, > | 
| 帳戶 | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶 | averageCost | Double | \$1=, =, <, > | 
| 帳戶 | ctr | Double | \$1=, =, <, > | 
| 帳戶 | activeViewCtr | Double | \$1=, =, <, > | 
| 帳戶 | searchImpressionShare | Double | \$1=, =, <, > | 
| 帳戶 | conversionAction | String | \$1=, = | 
| 帳戶 | conversionActionCategory | String | \$1=, = | 
| 帳戶 | conversionActionName | String | \$1=, =, LIKE | 
| 帳戶預算 | resourceName | String | \$1=, = | 
| 帳戶預算 | status | String | \$1=, = | 
| 帳戶預算 | proposedEndTimeType | String | \$1=, = | 
| 帳戶預算 | approvedEndTimeType | String | \$1=, = | 
| 帳戶預算 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶預算 | billingSetup | String | \$1=, = | 
| 帳戶預算 | name | String | \$1=, =, LIKE | 
| 帳戶預算 | approvedStartDateTime |  DateTime | BETWEEN, =, <, >, <=, >= | 
| 帳戶預算 | proposedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶預算 | approvedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶預算 | adjustedSpendingLimitMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 帳戶預算 | amountServedMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | resourceName | String | \$1=, =, LIKE | 
| 廣告群組 | status | String | \$1=, =, LIKE | 
| 廣告群組 | type | String | \$1=, =, LIKE | 
| 廣告群組 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | name | String | \$1=, =, LIKE | 
| 廣告群組 | 行銷活動 | String | \$1=, = | 
| 廣告群組 | cpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | targetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | cpmBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | cpvBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | targetCpmMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | effectiveTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | date | Date | BETWEEN, =, <, >, <=, >= | 
| 廣告群組 | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | useAudienceGrouped | Boolean | \$1=, = | 
| 廣告群組 | effectiveCpcBidMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | conversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組 | averageCost | Double | \$1=, =, <, > | 
| 廣告群組 | costPerAllConversions | Double | \$1=, =, <, > | 
| 廣告群組 | costPerConversion | Double | \$1=, =, <, > | 
| 廣告群組 | averagePageViews | Double | \$1=, =, <, > | 
| 廣告群組 | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | 點按數 | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | allConversions | Double | \$1=, =, <, > | 
| 廣告群組 | averageCpc | Double | \$1=, =, <, > | 
| 廣告群組 | absoluteTopImpressionPercentage | Double | \$1=, =, <, > | 
| 廣告群組 | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組 | topImpressionPercentage | Double | \$1=, =, <, > | 
| 廣告群組 | activeViewCtr | Double | \$1=, =, <, > | 
| 廣告群組 | ctr | Double | \$1=, =, <, > | 
| 廣告群組 | searchTopImpressionShare | Double | \$1=, =, <, > | 
| 廣告群組 | searchImpressionShare | Double | \$1=, =, <, > | 
| 廣告群組 | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| 廣告群組 | relativeCtr | Double | \$1=, =, <, > | 
| 廣告群組 | conversionAction | String | \$1=, = | 
| 廣告群組 | conversionActionCategory | String | \$1=, = | 
| 廣告群組 | conversionActionName | String | \$1=, =, LIKE | 
| 廣告群組 | updateMask | String |  | 
| 廣告群組 | 建立 | Struct |  | 
| 廣告群組 | update | Struct |  | 
| 廣告群組 | primaryStatus | String | \$1=, = | 
| 廣告群組 | primaryStatusReasons | 清單 |  | 
| 廣告群組廣告 | resourceName | String | \$1=, = | 
| 廣告群組廣告 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | status | String | \$1=, = | 
| 廣告群組廣告 | labels | 清單 |  | 
| 廣告群組廣告 | adGroup | String | \$1=, = | 
| 廣告群組廣告 | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | approvalStatus | String | \$1=, = | 
| 廣告群組廣告 | reviewStatus | String | \$1=, = | 
| 廣告群組廣告 | adStrength | String | \$1=, = | 
| 廣告群組廣告 | type | String | \$1=, = | 
| 廣告群組廣告 | businessName | String | \$1=, =, LIKE | 
| 廣告群組廣告 | date | Date | BETWEEN, =, <, >, <=, >= | 
| 廣告群組廣告 | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | conversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| 廣告群組廣告 | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | averageCost | Double | \$1=, =, <, > | 
| 廣告群組廣告 | costPerAllConversions | Double | \$1=, =, <, > | 
| 廣告群組廣告 | costPerConversion | Double | \$1=, =, <, > | 
| 廣告群組廣告 | 點按數 | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | averagePageViews | Double | \$1=, =, <, > | 
| 廣告群組廣告 | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | allConversions | Double | \$1=, =, <, > | 
| 廣告群組廣告 | averageCpc | Double | \$1=, =, <, > | 
| 廣告群組廣告 | topImpressionPercentage | Double | \$1=, =, <, > | 
| 廣告群組廣告 | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 廣告群組廣告 | absoluteTopImpressionPercentage | Double | \$1=, =, <, > | 
| 廣告群組廣告 | activeViewCtr | Double | \$1=, =, <, > | 
| 廣告群組廣告 | ctr | Double | \$1=, =, <, > | 
| 廣告群組廣告 | conversionAction | String | \$1=, = | 
| 廣告群組廣告 | conversionActionCategory | String | \$1=, = | 
| 廣告群組廣告 | conversionActionName | String | \$1=, =, LIKE | 
| 廣告群組廣告 | updateMask | String |  | 
| 廣告群組廣告 | 建立 | Struct |  | 
| 廣告群組廣告 | update | Struct |  | 
| 廣告群組廣告 | policyValidationParameter | Struct |  | 
| 廣告群組廣告 | primaryStatus | String | \$1=, = | 
| 廣告群組廣告 | primaryStatusReasons | 清單 |  | 
| 行銷活動 | resourceName | String | \$1=, = | 
| 行銷活動 | status | String | \$1=, = | 
| 行銷活動 | baseCampaign | String | \$1=, = | 
| 行銷活動 | name | String | \$1=, =, LIKE | 
| 行銷活動 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | campaignBudget | String | \$1=, =, LIKE | 
| 行銷活動 | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動 | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動 | adServingOptimizationStatus | String | \$1=, = | 
| 行銷活動 | advertisingChannelType | String | \$1=, = | 
| 行銷活動 | advertisingChannelSubType | String | \$1=, = | 
| 行銷活動 | experimentType | String | \$1=, = | 
| 行銷活動 | servingStatus | String | \$1=, = | 
| 行銷活動 | biddingStrategyType | String | \$1=, = | 
| 行銷活動 | domainName | String | \$1=, =, LIKE | 
| 行銷活動 | languageCode | String | \$1=, =, LIKE | 
| 行銷活動 | useSuppliedUrlsOnly | Boolean | \$1=, = | 
| 行銷活動 | positiveGeoTargetType | String | \$1=, = | 
| 行銷活動 | negativeGeoTargetType | String | \$1=, = | 
| 行銷活動 | paymentMode | String | \$1=, = | 
| 行銷活動 | optimizationGoalTypes | 清單 |  | 
| 行銷活動 | date | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動 | averageCost | Double |  | 
| 行銷活動 | 點按數 | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | useAudienceGrouped | Boolean | \$1=, = | 
| 行銷活動 | activeViewMeasurableCostMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | costPerAllConversions | Double | \$1=, =, <, > | 
| 行銷活動 | costPerConversion | Double | \$1=, =, <, > | 
| 行銷活動 | invalidClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | publisherPurchasedClicks | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | averagePageViews | Double | \$1=, =, <, > | 
| 行銷活動 | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動 | allConversionsByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | allConversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | conversionsByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | conversionsValueByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | valuePerAllConversionsByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | valuePerConversionsByConversionDate | Double | \$1=, =, <, > | 
| 行銷活動 | allConversions | Double | \$1=, =, <, > | 
| 行銷活動 | absoluteTopImpressionPercentage | Double | \$1=, =, <, > | 
| 行銷活動 | searchAbsoluteTopImpressionShare | Double | \$1=, =, <, > | 
| 行銷活動 | averageCpc | Double | \$1=, =, <, > | 
| 行銷活動 | searchImpressionShare | Double | \$1=, =, <, > | 
| 行銷活動 | searchTopImpressionShare | Double | \$1=, =, <, > | 
| 行銷活動 | activeViewCtr | Double | \$1=, =, <, > | 
| 行銷活動 | ctr | Double | \$1=, =, <, > | 
| 行銷活動 | relativeCtr | Double | \$1=, =, <, > | 
| 行銷活動 | updateMask | String |  | 
| 行銷活動 | 建立 | Struct |  | 
| 行銷活動 | update | Struct |  | 
| 行銷活動預算 | resourceName | String | \$1=, = | 
| 行銷活動預算 | id | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | status | String | \$1=, = | 
| 行銷活動預算 | deliveryMethod | String | \$1=, = | 
| 行銷活動預算 | period | String | \$1=, = | 
| 行銷活動預算 | type | String | \$1=, = | 
| 行銷活動預算 | name | String | \$1=, =, LIKE | 
| 行銷活動預算 | amountMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | explicitlyShared | Boolean | \$1=, = | 
| 行銷活動預算 | referenceCount | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | hasRecommendedBudget | Boolean | \$1=, = | 
| 行銷活動預算 | date | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動預算 | costMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | startDate | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動預算 | endDate | Date | BETWEEN, =, <, >, <=, >= | 
| 行銷活動預算 | maximizeConversionValueTargetRoas | Double | \$1=, =, <, > | 
| 行銷活動預算 | maximizeConversionsTargetCpaMicros | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | selectiveOptimizationConversionActions | String |  | 
| 行銷活動預算 | averageCost | Double | \$1=, =, <, > | 
| 行銷活動預算 | costPerAllConversions | Double | \$1=, =, <, > | 
| 行銷活動預算 | costPerConversion | Double | \$1=, =, <, > | 
| 行銷活動預算 | videoViews | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | 點按數 | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | allConversions | Double | \$1=, =, <, > | 
| 行銷活動預算 | valuePerAllConversions | Double | \$1=, =, <, > | 
| 行銷活動預算 | averageCpc | Double | \$1=, =, <, > | 
| 行銷活動預算 | impressions | BigInteger | BETWEEN, =, \$1=, <, >, <=, >= | 
| 行銷活動預算 | ctr | Double | \$1=, =, <, > | 
| 行銷活動預算 | updateMask | String |  | 
| 行銷活動預算 | 建立 | Struct |  | 
| 行銷活動預算 | update | Struct |  | 

 **分區查詢** 

 如果想要在 Spark 中使用並行，可以提供其他 Spark 選項 `PARTITION_FIELD`、`LOWER_BOUND`、`UPPER_BOUND`、`NUM_PARTITIONS`。使用這些參數，原始查詢會分區為可由 Spark 任務並行執行的子查詢的 `NUM_PARTITIONS` 數目。
+  `PARTITION_FIELD`：用來分區查詢的欄位名稱。
+  `LOWER_BOUND`：所選分區欄位的包含下限值。

   對於日期，我們接受 Spark SQL 查詢中使用的 Spark 日期格式。有效值的範例：`"2024-02-06"`。
+  `UPPER_BOUND`：所選分區欄位的唯一上限值。
+  `NUM_PARTITIONS`：分區數目。

 實體分區欄位支援詳細資訊如下表所示。


| 實體名稱 | 分區欄位 | 資料類型 | 
| --- | --- | --- | 
| 廣告群組廣告 | date | Date | 
| 廣告群組 | date | Date | 
| 行銷活動 | date | Date | 
| 行銷活動預算 | date | Date | 

 **範例** 

```
googleads_read = glueContext.create_dynamic_frame.from_options(
    connection_type="googleads",
    connection_options={
        "connectionName": "connectionName",
        "ENTITY_NAME": "campaign-3467***",
        "API_VERSION": "v16",
        "PARTITION_FIELD": "date"
        "LOWER_BOUND": "2024-01-01"
        "UPPER_BOUND": "2024-06-05"
        "NUM_PARTITIONS": "10"
    }
)
```

# Google Ads 連線選項
<a name="googleads-connection-options"></a>

以下是 Google Ads 的連線選項：
+  `ENTITY_NAME`(String) - (必要) 用於讀取/寫入。Google Ads 中的物件名稱。
+  `API_VERSION`(String) - (必要) 用於讀取/寫入。要使用的 Google Ads Rest API 版本。範例：v16。
+  `DEVELOPER_TOKEN`(String) - (必要) 用於讀取/寫入。需要對向 API 提出請求的開發人員或應用程式進行身分驗證。
+  `MANAGER_ID`(String) - 用於讀取/寫入。可讓您管理多個 Google Ads 帳戶的唯一識別碼。這是授權管理員的客戶 ID。如果您透過管理員帳戶存取客戶帳戶，則需要 `MANAGER_ID`。如需詳細資訊，請參閱 [login-customer-id](https://developers.google.com/google-ads/api/docs/concepts/call-structure#cid)。
+  `SELECTED_FIELDS`(List<String>) - 預設：empty(SELECT \$1)。用於讀取。您要為物件選取的資料欄。
+  `FILTER_PREDICATE`(String) - 預設：空白。用於讀取。其應該為 Spark SQL 格式。
+  `QUERY`(String) - 預設：空白。用於讀取。完整的 Spark SQL 查詢。
+  `PARTITION_FIELD`(String) - 用於讀取。用於分區查詢的欄位。
+  `LOWER_BOUND`(String) - 用於讀取。所選分區欄位的包含下限值。
+  `UPPER_BOUND`(String) - 用於讀取。所選分區欄位的唯一上限值。
+  `NUM_PARTITIONS`(Integer) - 預設：1。用於讀取。要讀取的分區數目。

# 建立 Google Ads 帳戶
<a name="googleads-create-account"></a>

1.  使用您的憑證登入 [Google Ads 開發人員帳戶](https://console.cloud.google.com)，然後前往 \$1MyProject。  
![\[螢幕擷取畫面顯示了登入 Google Ads 開發人員帳戶的歡迎畫面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-log-in-developer-account.png)

1.  選擇**新專案**，並提供建立 Google 專案所需的資訊 (如果您在其中沒有任何已註冊的應用程式)。  
![\[螢幕擷取畫面顯示「選取專案」頁面。選擇右上角的「新增專案」。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-new-project.png)  
![\[螢幕擷取畫面顯示「新增專案」視窗，以輸入專案名稱並選擇位置。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-new-project-name-location.png)

1.  選擇**導覽索引標籤**，然後選擇 **API 和設定**，以及**建立用戶端 ID **和 **ClientSecret**，這將需要進一步的組態才能在 AWS Glue 和 GoogleAds 之間建立連線。如需詳細資訊，請參閱 [API 憑證](https://console.cloud.google.com/apis/credentials)。  
![\[螢幕擷取畫面顯示 API 和服務組態頁面。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-apis-and-services.png)

1.  依次選擇**建立憑證**和 **OAuth 用戶端 ID**。  
![\[螢幕擷取畫面顯示 API 和服務組態頁面，其中包含「建立憑證」下拉式清單和反白顯示的「Oauth 用戶端 ID」選項。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-create-credentials.png)

1.  選取**應用程式類型**為 **Web 應用程式**。  
![\[螢幕擷取畫面顯示「建立 OAuth 用戶端 ID」頁面，以及應用程式類型為 Web 應用程式。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-oauth-client-id-application-type.png)

1.  在**已授權的重新導向 URI** 下，新增 OAuth 重新導向 URI，然後選擇**建立**。如有需要，您可以新增多個重新導向 URI。  
![\[螢幕擷取畫面會顯示「建立 OAuth 用戶端 ID」頁面和「已授權的重新導向 URI」區段。可在此新增 URI，並在需要時選擇「新增 URI」。完成後，選擇「建立」。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-oauth-redirect-uris.png)

1.  在 和 Google Ads 之間建立連線時，會產生您的**用戶端 ID** AWS Glue 和**用戶端秘密**。  
![\[螢幕擷取畫面會顯示「建立 OAuth 用戶端 ID」頁面和「已授權的重新導向 URI」區段。可在此新增 URI，並在需要時選擇「新增 URI」。完成後，選擇「建立」。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-oauth-client-created.png)

1.  根據您的應用程式需求新增範圍，選擇 **OAuth 同意畫面**，提供所需資訊，然後根據要求新增範圍。  
![\[螢幕擷取畫面顯示「更新選取的範圍」頁面。視需要選取您的範圍。\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/images/google-ads-selected-scopes.png)

# 限制
<a name="googleads-connector-limitations"></a>

以下是 Google Ads 連接器的限制：
+ `MANAGER_ID` 是建立連線時的選用輸入。但是，當您想要存取任何特定管理員下的客戶時， `MANAGER_ID` 是強制性輸入。下表說明基於連線中是否包含 `MANAGER_ID` 的存取限制。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/zh_tw/glue/latest/dg/googleads-connector-limitations.html)
+ 選擇管理員帳戶作為物件時，只有 `Account` 會顯示為子物件。在 Google Ads 連接器中，系統會根據個別用戶端帳戶 (而非管理員帳戶) 擷取行銷活動、廣告等實體。
+ 您無法擷取管理員帳戶的指標。您可以改為擷取個別用戶端帳戶的指標。
+  每個帳戶最多可有 1 萬個行銷活動，包括作用中和暫停的行銷活動。如需詳細資訊，請參閱[行銷活動](https://support.google.com/google-ads/answer/6372658)。
+  建立報告時，如果您選擇要顯示的特定指標，則不會傳回所選取指標都為零的任何資料列。如需詳細資訊，請參閱[零指標](https://developers.google.com/google-ads/api/docs/reporting/zero-metrics?hl=en#exclude_zero_metrics_by_segmenting)。
+  使用下列欄位時，完整映射流程不適用於帳戶、廣告群組和廣告群組廣告實體，特別是 conversionAction、conversionActionCategory 和 conversionActionName。如需詳細資訊，請參閱[區段和指標](https://developers.google.com/google-ads/api/docs/reporting/segmentation?hl=en#selectability_between_segments_and_metrics)。
+ 選取 `segments.date` 欄位時，日期範圍篩選條件是必要的。