如何打印多个调用谷歌分析API谷歌表与应用程序脚本

How to print multiple calls to Google Analytics API to Google Sheets with Apps Script

本文关键字:谷歌 API 脚本 应用程序 调用 何打印 打印      更新时间:2023-09-26

我试图从多个调用中打印多个结果到相同的谷歌表。我使用谷歌应用程序脚本调用谷歌分析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逻辑不正确。得到第一个结果,然后有:if (x) return y; else throw exception

所以它永远不会通过。使用调试器并逐行执行。您将看到无法进入第二个查询