Resolve 'Parsing Error: Please check your selector. (line XX)' Javascript/AWQL AdWords Data Grabber

46 views
Skip to first unread message

lennn

unread,
Dec 13, 2019, 2:14:23 PM12/13/19
to Google Ads Scripts Forum

Let me start by saying I am not a developer, so please forgive my ignorance here. :)

For the attached script, I am receiving the error: Parsing error. Please check your selector. (line 103)

For the life of me, I can't figure out how to fix this and I've done an extensive online search.


For reference, here is where the script came from: https://searchengineland.com/script-automates-adding-adwords-data-google-spreadsheet-277724

Any solutions would be much appreciated!


(Note that the personal info in the lines 17-21 have been filled out correctly.)


Thanks,




 // AdWords Script: Put Data From AdWords Report In Google Sheets
// --------------------------------------------------------------
// Copyright 2017 Optmyzr Inc., All Rights Reserved
// 
// This script takes a Google spreadsheet as input. Based on the column headers, data filters, and date range specified
// on this sheet, it will generate different reports.
//
// The goal is to let users create custom automatic reports with AdWords data that they can then include in an automated reporting
// tool like the one offered by Optmyzr.
//
//
// For more PPC management tools, visit www.optmyzr.com
//
*/

var DEBUG = 0; // set to 1 to get more details about what the script does while it runs; default = 0
var REPORT_SHEET_NAME = "report"; // the name of the tab where the report data should go
var SETTINGS_SHEET_NAME = "settings"; // the name of the tab where the filters and date range are specified
var SPREADSHEET_URL = "https://docs.google.com/spreadsheets/d/1dttJTb547L81XYKdTQ56LcfO9hHhbb9wm06ZY5mKhEo/edit#gid=0"; // The URL to the Google spreadsheet with your report template
var EMAIL_ADDRESSES = "exa...@example.com"; // Get notified by email at this address when a new report is ready

function main() {
  var currentSetting = new Object();
  currentSetting.ss = SPREADSHEET_URL;

  // Read Settings Sheet
  var settingsSheet = SpreadsheetApp.openByUrl(currentSetting.ss).getSheetByName(SETTINGS_SHEET_NAME);
  var rows = settingsSheet.getDataRange();
  var numRows = rows.getNumRows();
  var numCols = rows.getNumColumns();
  var values = rows.getValues();
  var numSettingsRows = numRows - 1;

  var sortString = "";
  var filters = new Array();
  for(var i = 0; i < numRows; i++) {
    var row = values[i];
    var settingName = row[0];
    var settingOperator = row[1];
    var settingValue = row[2];
    var dataType = row[3];
    debug(settingName + " " + settingOperator + " " + settingValue);

    if(settingName.toLowerCase().indexOf("report type") != -1) {
      var reportType = settingValue;
    } else if(settingName.toLowerCase().indexOf("date range") != -1) {
      var dateRange = settingValue;
    } else if(settingName.toLowerCase().indexOf("sort order") != -1) {
      var sortDirection = dataType || "DESC";
      if(settingValue) var sortString = "ORDER BY " + settingValue + " " + sortDirection;
      var sortColumnIndex = 1;
    }else {
      if(settingOperator && settingValue) {
        if(dataType.toLowerCase().indexOf("long") != -1 || dataType.toLowerCase().indexOf("double") != -1 || dataType.toLowerCase().indexOf("money") != -1 || dataType.toLowerCase().indexOf("integer") != -1) {
          var filter =  settingName + " " + settingOperator + " " + settingValue;
        } else {
          if(settingValue.indexOf("'") != -1) {
            var filter =  settingName + " " + settingOperator + ' "' + settingValue + '"';
          } else if(settingValue.indexOf("'") != -1) {
            var filter =  settingName + " " + settingOperator + " '" + settingValue + "'";
          } else {
            var filter =  settingName + " " + settingOperator + " '" + settingValue + "'";
          }
        }
        debug("filter: " + filter)
        filters.push(filter);
      }
    }
  }


  // Process the report sheet and fill in the data
  var reportSheet = SpreadsheetApp.openByUrl(currentSetting.ss).getSheetByName(REPORT_SHEET_NAME);
  var rows = reportSheet.getDataRange();
  var numRows = rows.getNumRows();
  var numCols = rows.getNumColumns();
  var values = rows.getValues();
  var numSettingsRows = numRows - 1;

  // Read Header Row and match names to settings
  var headerNames = new Array();
  var row = values[0];
  for(var i = 0; i < numCols; i++) {
    var value = row[i];
    headerNames.push(value);
    //debug(value);
  } 



  if(reportType.toLowerCase().indexOf("performance") != -1) {
    var dateString = ' DURING ' + dateRange;
  } else {
    var dateString = "";
  }
  if(filters.length) {
    var query = 'SELECT ' + headerNames.join(",") + ' FROM ' + reportType + ' WHERE ' + filters.join(" AND ") + dateString + " " + sortString;
  } else {
    var query = 'SELECT ' + headerNames.join(",") + ' FROM ' + reportType + dateString + " " + sortString;
  }
  debug(query);
  var report = AdWordsApp.report(query);
  try {
    report.exportToSheet(reportSheet);
    var subject = "Your " + reportType + " for " + dateRange + " for " + AdWordsApp.currentAccount().getName() + " is ready";
    var body = "currentSetting.ss<br>You can now add this data to <a href='https://www.optmyzr.com'>Optmyzr</a> or another reporting system.";
    MailApp.sendEmail(EMAIL_ADDRESSES, subject, body);
    Logger.log("Your report is ready at " + currentSetting.ss);
    Logger.log("You can include this in your scheduled Optmyzr reports or another reporting tool.");
  } catch (e) {
    debug("error: " + e);
  }

}

function debug(text) {
  if(DEBUG) Logger.log(text);
}

Google Ads Scripts Forum Advisor

unread,
Dec 13, 2019, 3:58:22 PM12/13/19
to adwords-scripts+apn2wqfxvgisssuq...@googlegroups.com, adwords-scripts+apn2wqfxvgisssuq...@googlegroups.co, adwords...@googlegroups.com
Hello,

Did you make a copy of the spreadsheet and insert the URL into the script? Would you mind providing your CID and script name?

Thanks,
Matt 
Google Ads Scripts Team

ref:_00D1U1174p._5001UOEX9W:ref

Ted Giraitis-Quaye

unread,
Dec 13, 2019, 8:47:52 PM12/13/19
to Google Ads Scripts Forum
You have to change AdWordsApp -> AdsApp. 

Google Ads Scripts Forum Advisor

unread,
Dec 16, 2019, 3:32:54 PM12/16/19
to adwords-scripts+apn2wqfsjs9dksov...@googlegroups.com, adwords...@googlegroups.com
Hi Ted,

At the moment, using AdWordsApp in place of AdsApp will not throw any errors.

Regards,

Jenny Shi

unread,
May 21, 2020, 3:30:20 PM5/21/20
to Google Ads Scripts Forum
Was there a resolution for this?  I am similarly getting this error for this script - sheet URL and everything has been properly updated.

ERROR: Invalid reporting query: ORDER_BY_CLAUSE_NOT_SUPPORTED: QueryError.ORDER_BY_CLAUSE_NOT_SUPPORTED. (file Code.gs, line 102)

Google Ads Scripts Forum Advisor

unread,
May 21, 2020, 4:16:06 PM5/21/20
to adwords-scripts+apn2wqderbjmkqjh...@googlegroups.com, adwords...@googlegroups.com
Hi Jenny,

This third party script is trying to use the 'order by' clause. However, scripts does not support the use of this clause in reports. This script is from a few years ago, so it's possible it was supported previously. It may be worth reaching out to the author to see if they have an updated version of the script.

Thanks,
Reply all
Reply to author
Forward
0 new messages