我想通过Google应用脚本从DCM获取完整报告,以便将其插入电子表格中。 此代码工作正常,但我无法提取超过10K行的报告。
function DCMdownload() {
var reportId = 111825394
var profileId = 2406185;
var httpOptions = {'headers': {'Authorization': 'Bearer ' +
ScriptApp.getOAuthToken()}};
var additionalParameters = {'synchronous': 'true'};
//corro el reporte e identifico el file ID
var ReportFile = DoubleClickCampaigns.Reports.run(profileId, reportId,
additionalParameters);
var ReportFileID = (ReportFile.id);
//obtengo el csv y lo parseo
var newReportFile = DoubleClickCampaigns.Files.get(reportId,
ReportFileID);
if(newReportFile.urls) {var httpOptions = {'headers': {'Authorization':
'Bearer ' + ScriptApp.getOAuthToken()}};
var csvContent = UrlFetchApp.fetch(newReportFile.urls.apiUrl,
httpOptions).getContentText();
var csvData = Utilities.parseCsv(csvContent);
//pego la data en la sheet que esté activa
var sheet = SpreadsheetApp.getActiveSheet();
sheet.getRange(1, 1, csvData.length,
csvData[0].length).setValues(csvData);
//eliminar primeras filas y fila de total
var lastrow = sheet.getLastRow()
sheet.deleteRows(1, 11);
var lastrow = sheet.getLastRow()
sheet.deleteRows(lastrow);
}
}
这适用于少于10,000行的报表,因为您可以使用DCM界面中的按钮将它们添加到驱动器。如果它有超过10k行,则禁用此选项。您似乎无法在Google工作表中导入它。
有什么方法可以解决这个问题吗?
交叉发布到SOes
答案 0 :(得分:0)
你的代码中有这个:
var csvContent = UrlFetchApp.fetch(newReportFile.urls.apiUrl,
httpOptions).getContentText();
在提取呼叫上设置了速率限制,因为我记得每次调用10 MB,100 mb per day.变通办法可能涉及在请求中使用某种限制,然后再次调用以获取下一部分数据。只要它们当天不超过100 mb,这是可以的。根据我有限的经验,如果Sheet将是10,000 +行,我会考虑使用其他东西进行分析。 Google的Data Studio怎么样?那可以从多种源类型中提取数据?