[go: up one dir, main page]

What's changing?
We are introducing restrictions on certain combinations of conversion columns in AdWords API and Google Ads scripts reports. If your reporting queries include these column combinations, you need to fix your queries before Feb 15, 2021.

Technical details
Starting the week of Feb 15, 2021, you will receive a ReportDefinitionError.INVALID_FIELD_NAME_FOR_REPORT error if your AdWords API report request contains columns from both of the restricted column sets listed below. Similarly, calls to the AdsApp.report method in Google Ads scripts will fail for queries with these restricted column combinations.

Restricted conversion columns:
  • ConversionAdjustment
  • ConversionAdjustmentLagBucket
  • ConversionAttributionEventType
  • ConversionCategoryName
  • ConversionLagBucket
  • ConversionTrackerId
  • ConversionTypeName
Metrics columns:
  • AllConversionRate
  • ConversionRate
  • CostPerAllConversion
  • CostPerConversion
  • CostPerCurrentModelAttributedConversion
The ReportDefinitionService.getReportFields method will reflect these restrictions in the exclusiveFields list of each impacted column.

What should you do?
Before Feb 15, 2021, review and modify the reporting queries in your AdWords API and Google Ads scripts applications to stop using the prohibited column combinations.

Why is this changing?
These column combinations are currently disallowed by the Google Ads UI, Google Ads Editor and the Google Ads API. This change makes the AdWords API and Google Ads scripts behaviour consistent with the rest of the Google Ads platform.

If you have any questions or need help, please contact us via the forum.

As previously announced, AdWords API v201309 and AdWords scripts will start enforcing a limit of 10,000 matching values as arguments for the IN and NOT_IN operators starting March 31, 2014. This limit is currently enforced in AdWords API v201402.

You may be affected by this change if you construct large AWQL queries or selector predicates that have thousands of matching values using these operators in one of these use cases:

To make sure your applications and scripts work properly, check any code that constructs queries for reports or retrieve items using get or query methods and add necessary limit checks before March 31, 2014.

If you have any questions about this change, you can post them on AdWords API or Scripts developer forums.

To ensure reliable performance for all developers and advertisers, AdWords API and AdWords scripts will start enforcing a limit of 10,000 matching values as arguments for the IN and NOT_IN operators starting March 31, 2014.

You may be affected by this change if you construct large queries that have thousands of matching values using these operators in one of these use cases: Once this change goes into effect, our servers will start throwing a SelectorError if your queries contains more than 10,000 matching values for IN and NOT_IN operators. For AdWords API v201309, the error reason would be set to SELECTOR_ERROR. In newer versions, the error reason would be set to TOO_MANY_PREDICATE_VALUES.

To make sure your applications and scripts work properly, check any code that constructs queries for reports and AWQL and add necessary limit checks before March 31, 2014.

If you have any questions about this change, you can post them on AdWords API or Scripts developer forums.

If you want to get your campaign management data using the AdWords API, AWQL (AdWords Query Language) is a great choice. AWQL offers an SQL-like syntax for setting up your fields, ordering, paging, and predicates all in one simple string. AWQL is mainly used for reports, but is also supported with some services.

Services Supported

There are currently five services that support AWQL: CampaignService, CampaignCriterionService, AdGroupService, AdGroupCriterionService, and AdGroupAdService.

Here is a Java code comparison that finds the IDs and names of ad groups within a specific campaign. Using the standard methods, you have to set fields, ordering, paging, and predicates separately.
Selector selector = new Selector();
selector.setFields(new String[] {"Id", "Name"});
selector.setOrdering(new OrderBy[] {new OrderBy("Name", SortOrder.ASCENDING)});
selector.setPaging(new Paging(offset, PAGE_SIZE));
Predicate campaignIdPredicate =
    new Predicate("CampaignId", PredicateOperator.IN, new String[] {campaignId.toString()});
selector.setPredicates(new Predicate[] {campaignIdPredicate});
AdGroupPage page = adGroupService.get(selector);
The same task can be done more simply using AWQL, as shown below.
String query = 
    "SELECT Id, Name" + 
    " WHERE CampaignId IN [%d]" + 
    " ORDER BY Name ASC" + 
    " LIMIT %d, %d";
query = String.format(query, campaignId, offset, PAGE_SIZE);
AdGroupPage page = adGroupService.query(query);
We also have plans to add support for AWQL to more services in upcoming releases.

Reporting Features

Within AdHoc reports, AWQL also supports the unique DURING clause, which is an easy way to filter results in a given date range. For example, if you were interested in finding campaigns with few impressions during October, you could run a query like this.
SELECT CampaignId, CampaignName, Clicks, Impressions
FROM CAMPAIGN_PERFORMANCE_REPORT
WHERE Impressions < 100
DURING 20131001,20131031
Remember that stats are only available via AdHoc reports.

We recommend using AWQL as an expressive, easy way to retrieve data from your AdWords campaigns. Please feel free to ask any questions on the AdWords API forum or on our Google+ page.