【发布时间】:2017-01-24 09:04:28
【问题描述】:
我对 Google 应用脚本还很陌生。我需要使用 Google-app-script 功能在电子表格中构建报告。我知道如何从 DCM/DFM 报告现有报告下载到电子表格。
但我未能在未从 DCM/DFM 下载现有报告的情况下创建新的内部电子表格。是否可以?可能有人有样品(我没有找到)?或者我错过了这个概念,将数据拉入电子表格的唯一方法是首先在 DCM/DCF 报表生成器中创建报表?
这是我正在使用的代码。
function generateReport() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheetByName('Reports');
var profileId = 2623334
var httpOptions = {
'headers': {'Authorization': 'Bearer ' + ScriptApp.getOAuthToken()}
}
var resource = {
'kind': 'dfareporting#report',
'accountId': '34405',
'type': 'STANDARD',
'name': 'Simple Report',
'criteria': {
'dateRange': {
'kind': 'dfareporting#dateRange',
'startDate': '2016-09-01',
'endDate': '2017-01-22',
},
'dimensions': [
{
'kind': 'dfareporting#sortedDimension',
'name': 'dfa:date',
}
],
'metricNames': [
'dfa:clicks', 'dfa:impressions'
],
}
}
var url = DoubleClickCampaigns.Reports.insert(resource, profileId);
var report = UrlFetchApp.fetch(url.urls.apiUrl, httpOptions);
for (var i=0; i<report.length; i++) {
var row = report[i];
sheet.getRange('A' + String(i+2)).setValue(row[0]);
sheet.getRange('B' + String(i+2)).setValue(row[1]);
sheet.getRange('C' + String(i+2)).setValue(row[2]);
}
}
错误出现在这里:
var report = UrlFetchApp.fetch(url.urls.apiUrl, httpOptions);
错误信息:
无法读取未定义对象的属性“apiUrl”。
【问题讨论】:
-
我不熟悉 Doubleclick api,但感觉
DoubleClickCampaigns.Reports.insert(resource, profileId);是一个异步调用,在脚本继续尝试提取结果时可能尚未完成。 -
仅供参考 报告资源响应对象没有 url 属性。 developers.google.com/doubleclick-advertisers/v2.7/…
-
谢谢,我终于解决了这个问题 1) 通过 google-app-script 创建新报告 2) 将此报告从 DCM 下载到电子表格