javascript - 如何使用 Apps 脚本打印对 Google Analytics API 的多次调用到 Google Sheets

标签 javascript google-apps-script google-sheets google-analytics-api

我正在尝试将多次调用的多个结果打印到同一张 Google 工作表中。我正在使用 Google Apps 脚本来调用 Google Analytics API。

我目前可以打印两组数据,但第二组数据强制我的第一次调用。这几乎就像第二次调用的结果被第一次调用覆盖。我确信我的问题是在我尝试打印两组结果时出现的。

这是我的代码:

function getReportDataForProfile(firstProfile) {

  var profileId = firstProfile;
  var tableId = 'ga:' + profileId;
  var startDate = getMonthsAgo(3);   // Months ago.
  var endDate = getEndDate (0); // Today.

  var optArgs = {
    'dimensions': 'ga:month',              // Comma separated list of dimensions.
    'segment':'gaid::-lPvLp6LTbyDv3jOuYgEQA', // Female 18-24
    'start-index': '1',
    'max-results': '250'                     // Display the first 250 results.
  };

  var optArgs1 = {
    'dimensions': 'ga:month',              // Comma separated list of dimensions.
    'segment':'gaid::Uu6nRXdoQxipnELhe94ejg', //Female 25 - 30
    'start-index': '1',
    'max-results': '250'                     // Display the first 250 results.
  };

// Make a request to the API.
  var results = Analytics.Data.Ga.get(
      tableId,                    // Table id (format ga:xxxxxx).
      startDate,                  // Start-date (format yyyy-MM-dd).
      endDate,                    // End-date (format yyyy-MM-dd).
      'ga:goal19Completions', // Comma seperated list of metrics.
      optArgs);

  if (results.getRows()) {
    return results;

  } else {
    throw new Error('No views (profiles) found');
  };

    var results1 = Analytics.Data.Ga.get(
      tableId,                    // Table id (format ga:xxxxxx).
      startDate,                  // Start-date (format yyyy-MM-dd).
      endDate,                    // End-date (format yyyy-MM-dd).
      'ga:goal19Completions', // Comma seperated list of metrics.
      optArgs1);

  if (results1.getRows()) {
    return results1;

  } else {
    throw new Error('No views (profiles) found');
  };

}

function outputToSpreadsheet(results) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // Print the headers.
  var headerNames = [];
  for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) {
    headerNames.push(header.getName());
  }

  sheet.getRange(1, 1, 1, headerNames.length)
      .setValues([headerNames]);

  // Print the rows of data.
  sheet.getRange(2, 1, results.getRows().length, headerNames.length)
      .setValues(results.getRows());

}

function outputToSpreadsheet(results1) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();

  // Print the headers.
  var headerNames = [];
  for (var i = 0, header; header = results1.getColumnHeaders()[i]; ++i) {
    headerNames.push(header.getName());
  }

  sheet.getRange(1, 3, 1, headerNames.length)
      .setValues([headerNames]);

  // Print the rows of data.
  sheet.getRange(2, 3, results1.getRows().length, headerNames.length)
      .setValues(results1.getRows());

}

如有任何帮助,我们将不胜感激。

最佳答案

你的javascript逻辑不正确。 你得到第一个结果,然后得到: 如果(x) 返回y; 别的 抛出异常

所以它永远不会过去。 使用调试器并单步执行每一行。您将看到不可能到达第二个查询。

关于javascript - 如何使用 Apps 脚本打印对 Google Analytics API 的多次调用到 Google Sheets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31993870/

相关文章:

google-apps-script - Google Apps 脚本可根据另一个工作表中的单个 TRUE/FALSE 单元格清除范围

Javascript Photoshop 一一删除路径错误?

hyperlink - 使用JS将单元格中的链接复制到另一个工作表时保留超链接URL

javascript - .typescript + angular 2中的每个函数

javascript - 谷歌脚本: Adding UI Menu always results in "Read data" menu item

javascript - Google Apps 脚本 -- 使用 getdraft() 方法不起作用

arrays - 如何根据 Google 表格中其他两个单元格的比较,使单元格返回值列表中的一个?

正则表达式删除时区戳

javascript - Internet Explorer 弹出消息在 Windows 10 中被 chop

javascript - 显式控制 ng-model 对象的顺序