Let’s fix this “Failed to read from AdWords. Please wait a bit and try again.”

“Failed to read from AdWords. Please wait a bit and try again.” 

This frustrating and not-so-very descriptive error message usually can be fixed in one of these ways:

1 – Fix your label selectors

Most probably this error is caused by a script that tries to select entities (accounts, campaigns, keywords etc) based on associated labels.

This can happen when selecting entities in the WHERE clause of your AWQL query, as well as in the .withCondition part of your selector statement.

1.1 AWQL

In AWQL queries you can filter entities based on the Labels attribute. The attribute is of type List . So you can only filter using one of these operators:

CONTAINS_ALL [] , CONTAINS_ANY [] , CONTAINS_NONE []

The issue here is that (contrary to some of Google’s documentation) these operators in the WHERE clause are expecting a label ID instead of Label name.

Here’s an AWQL example that throws the error:

var labelToIgnore = "label"; // add this label to campaigns to ignore

var awqlQuery = 
 "SELECT Date, CampaignName, Cost, Conversions" +
 " FROM CAMPAIGN_PERFORMANCE_REPORT" +
 " WHERE Conversions < 1 AND Labels CONTAINS_NONE ['"+labelToIgnore+"']" +
 " AND Cost > 100" +
 " DURING THIS_MONTH";
var report = AdsApp.report(awqlQuery);

The problem here is that the CONTAINS_NONE operator is followed by a StringList that contains the label name(s), not the label Id(s).

So, as a workaround, you can get the label Id, by name, with the following code:

var labelToIgnore = "label"; // add this label to campaigns to ignore

var label = AdsApp.labels().withCondition("Name = "+labelToIgnore).get().next();
var labelId = label.getId();

var awqlQuery = 
 "SELECT Date, CampaignName, Cost, Conversions" +
 " FROM CAMPAIGN_PERFORMANCE_REPORT" +
 " WHERE Conversions < 1 AND Labels CONTAINS_NONE ['"+labelId +"']" +
 " AND Cost > 100" +
 " DURING THIS_MONTH";
var report = AdsApp.report(awqlQuery);

Here’s another example by Google:

function filterReportByLabelIds() {
  var label = AdsApp.labels().withCondition(
      "Name = 'High performance campaigns'").get().next();
  var query = 'SELECT CampaignName, Clicks, Impressions, Cost from ' +
      'CAMPAIGN_PERFORMANCE_REPORT where Labels CONTAINS_ANY ' +
      '[' + label.getId() + '] during THIS_MONTH';

  var report = AdsApp.report(query);

  var rows = report.rows();
  while (rows.hasNext()) {
    var row = rows.next();
    var campaignName = row['CampaignName'];
    var clicks = row['Clicks'];
    var impressions = row['Impressions'];
    var cost = row['Cost'];
    Logger.log(campaignName + ',' + clicks + ',' + impressions + ',' + cost);
  }
}

 

1.2  The .withCondition part of your selector statement

[TODO: write fix. If you read this and need the fix, please send an email to nils [at] nilsrooijmans.com and I will try to finish this part]

2 – Browser issue

I have no explanation for this, but sometimes reloading the browser, clearing the cache and cookies is a solution to the issue.

 

3 – Transient error

Sometimes (not very often though), it simply is a temporary issue on Google’s side. Try again tomorrow 🙂

 


AAAaargh! I’m still getting this damn error message!

If you have checked for all of the issues described above and still get the “Please check your selector parsing error”, fear not.

I’m here to help. Contact me and I will try to help. (Send a copy of the script and screenshot of your error message to nils[at]nilsrooijmans.com)

 


 

Join thousands of PPC geeks who already have access:

If the button above isn’t working for you, you can sign up here to get access.