Как указать диапазон дат для Google Adwords CLICK_PERFORMANCE_REPORT
Я пытаюсь запросить API AdWords (v201603) и использую / расширяю предоставленные примеры Java.
Проблема, с которой я сталкиваюсь, заключается в возможности указать конкретную дату для загрузки данных отчета для отчета CLICK_PERFORMANCE_REPORT. Этот отчет ограничен возвратом данных за один день за один раз (до последних 90 дней).
Я могу получать данные за сегодня и вчера, используя спецификаторы: ReportDefinitionDateRangeType.TODAY и ReportDefinitionDateRangeType.YESTERDAY, но мне действительно нужно указать конкретную дату в течение последних 90 дней, чтобы получить как можно больше исторических данных.
Я пробовал следующее:
DateRange dr = new DateRange();
dr.setMin("20160401");
dr.setMax("20160402");
selector.setDateRange(dr);
reportDefinition.setDateRangeType(ReportDefinitionDateRangeType.CUSTOM_DATE);
reportDefinition.setReportType(ReportDefinitionReportType.CLICK_PERFORMANCE_REPORT);
reportDefinition.setDownloadFormat(DownloadFormat.CSV);
Как с пользовательским спецификатором даты, так и без него, и любой из них выдает следующую ошибку:
Отчет не был загружен из-за: HTTP-кода ответа: 400, триггера: для параметра reportType требуется один день DateRange: CLICK_PERFORMANCE_REPORT, тип: ReportDefinitionError.INVALID_DATE_RANGE_FOR_REPORT
Любая помощь высоко ценится, заранее спасибо
2 ответа
Вам нужно будет использовать DURING и ту же строку даты.
... + 'DURING 20161004,20161004';
Итератор одного дня для скриптов AdWords CLICK_PERFORMANCE_REPORT:
var start = new Date("12/01/2016");
var end = new Date("12/18/2016");
while(start < end){
var newDate = start.setDate(start.getDate() + 1);
start = new Date(newDate);
singleDay = start.toISOString().substring(0, 10).replace(/-/g,"");
console.log(singleDay);
}
Utilities.formatDate(start, timeZone, "yyyyMMdd");
форматирует объект даты как 8-значное целое, поэтому:
singleDay = Utilities.formatDate(start, timeZone, "yyyyMMdd");
использование singleDay
в 'DURING ' + singleDay + ',' + singleDay);