Скрипт AWQL / Apps ГДЕ Дата Название дня равно Сегодняшнее имя дня - PullRequest
0 голосов
/ 16 ноября 2018

Я выполняю базовый запрос скрипта AWQL и приложений из моей учетной записи на листе Google. В настоящее время у меня есть похожий сценарий для работы на трендовой основе. Я создаю автоматический отчет по выбору эффективности кампании за последние 30 дней. Однако из-за размера учетной записи я хочу выбрать только те дни в этом временном интервале, которые соответствуют сегодняшнему названию дня. например сегодня пятница, поэтому мне нужны только данные за пятницу в диапазоне дат. Это отчет по трендовым данным, поэтому мне нужен только текущий день недели.

Ниже приведен пример кода, который нужно вставить в электронную таблицу. Я никогда не смогу заставить это работать с включенным оператором WHERE. Я перепробовал много вариантов, которые привели меня к этому вопросу.

Я получаю «Ошибка разбора. Пожалуйста, проверьте ваш селектор». сообщение об ошибке из-за оператора where, но я пытаюсь понять, почему.

   function main(){

    var sheetURL = 'INSERT_SPREADSHEET_URL_HERE';
    var sheetName = 'googleData';

    //This is the days of the week for the today lookup
    var days = ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday' ];

    //This is today's date
    var end = new Date().toISOString().slice(0,10);

    //This is for x amount of days previous, currently set at 30 days
    var d = new Date();
    d.setDate(d.getDate()-30);
    var start = d.toISOString().slice(0,10);

    //This joins the two above dates together and replaces / with blank characters
    var dateRanges = start.replace(/-/g,"") + "," + end.replace(/-/g,"");

    //This supplies the current day of week
    var dow = new Date(end);
    var dayName = days[dow.getDay()];

    //Check the correct day of week is showing
    //Logger.log(dayName);

    //This is to check the date format is correct
    //Logger.log(dateRanges);

    var QUERIES = [{'query' : 'SELECT Date, DayOfWeek, HourOfDay, CampaignName, Impressions, Clicks, Cost, Conversions, ConversionValue ' +
                'FROM CAMPAIGN_PERFORMANCE_REPORT ' +
                'WHERE DayOfWeek = ' + dayName +
                'DURING ' + dateRanges, 
                'spreadsheetUrl' : + sheetURL,
                'tabName' : 'googleData',
                'reportVersion' : 'v201806'
               }            
              ];


      //This is to gather the above query and push it to the spreadsheet stated above
     for(var i in QUERIES) {
        var queryObject = QUERIES[i];
        var query = queryObject.query;
        var spreadsheetUrl = queryObject.spreadsheetUrl;
        var tabName = queryObject.tabName;
        var reportVersion = queryObject.reportVersion;
        //Logger.log(spreadsheetUrl + " " + query);
        var spreadsheet = SpreadsheetApp.openByUrl(spreadsheetUrl);
        var sheet = spreadsheet.getSheetByName(tabName);
        var report = AdWordsApp.report(query, {apiVersion: reportVersion});
        report.exportToSheet(sheet);
      }
}

1 Ответ

0 голосов
/ 16 ноября 2018

Проверьте ваше предложение WHERE, значение dayName должно быть заключено в кавычки.

Попробуйте это (заметьте, я использовал одинарные кавычки вместо двойных):

var query = "SELECT Date, DayOfWeek, HourOfDay, CampaignName, Impressions, Clicks, Cost, Conversions, ConversionValue "
        + "FROM CAMPAIGN_PERFORMANCE_REPORT" 
        + "WHERE DayOfWeek = '" + dayName + "'"
        + "DURING " + dateRanges;

var QUERIES = [{
        query:query, 
        spreadsheetUrl: sheetURL, 
        tabName:"googleData", 
        reportVersion:"v201806"
    }];

СОВЕТ : в будущем рассмотрите возможность использования Utilities.formatDate () вместо разбиения строк даты или использования таблицы поиска по дням.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...