如何使用应用脚本将超过10000行的DCM报告拖入Google工作表?

时间:2017-12-06 18:32:57

标签: google-apps-script google-sheets double-click-advertising

我想通过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

1 个答案:

答案 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怎么样?那可以从多种源类型中提取数据?