Google analytics 谷歌按渠道列出谷歌分析数据

Google analytics 谷歌按渠道列出谷歌分析数据,google-analytics,google-api,google-sheets,google-analytics-api,Google Analytics,Google Api,Google Sheets,Google Analytics Api,我有一个GoogleSheets文件,它调用GoogleAnalytics并提取度量。这很有效。我想做的是按渠道拉指标,这样最左边的一列就是渠道的集合(PPC、展示、有机、社交、电子邮件、推荐、附属、直接)。我需要使用多通道漏斗设置吗?还是有更好的方法 function getGAData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test Data"); // var startDate

我有一个GoogleSheets文件,它调用GoogleAnalytics并提取度量。这很有效。我想做的是按渠道拉指标,这样最左边的一列就是渠道的集合(PPC、展示、有机、社交、电子邮件、推荐、附属、直接)。我需要使用多通道漏斗设置吗?还是有更好的方法

function getGAData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("test Data");

//  var startDate = dateToYMD(sheet.getRange(3,3).getValue());
//  var endDate = dateToYMD(sheet.getRange(3,4).getValue());
  var dateRanges = readDateRanges(sheet);
  var profileIds = readProfileIds(sheet);
  var GAMetrics = readGAMetrics(sheet);
  var results = [];

  var metrics = [];
  var optArgs = [];
  var filterCount = 0;
  var prevFilter = '**NONE**';

  var i, j, k;
  var profileResults;
  var tempResults;

  for (i = 0; i < GAMetrics[0].length; i++) {
//    Utilities.sleep(100);

    if (prevFilter != GAMetrics[1][i]) {

      metrics[filterCount] = GAMetrics[0][i];

      optArgs[filterCount] = {
        'start-index': '1',
        'max-results': '10'                     // Display the first 250 results.
        };

      if (GAMetrics[1][i] != '')
        optArgs[filterCount].filters = GAMetrics[1][i];

      if (GAMetrics[2][i] != '')
        optArgs[filterCount].segment = GAMetrics[2][i];

      filterCount++;

    } else {

        metrics[filterCount-1] = metrics[filterCount-1] + ',' + GAMetrics[0][i];

    }

    prevFilter = GAMetrics[1][i];

  }

  for (i = 0; i < profileIds.length; i++) {      // get GA data for each of the rows of input

    profileResults = [];
    var tableId = 'ga:' + profileIds[i][0];
    var startDate = dateToYMD(dateRanges[i][0]);
    var endDate = dateToYMD(dateRanges[i][1]);
    for (j = 0; j < metrics.length; j++) {
      var metric = metrics[j];
      var options = optArgs[j];
      //var options = {
        //    'dimensions': 'ga:source',
      //};


      try {
        // Make a request to the API.
        tempResults = Analytics.Data.Ga.get(
            'ga:' + profileIds[i][0],        // Table id (format ga:xxxxxx).
            dateToYMD(dateRanges[i][0]),     // Start-date (format yyyy-MM-dd).
            dateToYMD(dateRanges[i][1]),     // End-date (format yyyy-MM-dd).
            metrics[j],                      // Comma seperated list of metrics.
            optArgs[j]);

  var report = Analytics.Data.Ga.get(tableId, startDate, endDate, metric,
      options);

        if (typeof tempResults.getRows() != 'undefined')
          appendArray(profileResults, tempResults.getRows()[0]);

      } catch (e) {

        Logger.log(e + ' - Profile ID: ' + profileIds[i][0] + ' - Metrics: ' + metrics[j] );

      }
    }

    //append Profile results to the set
    for (k = profileResults.length; k < GAMetrics[0].length; k++)
      profileResults[k] = '0';

    results.push(profileResults);
//    Utilities.sleep(200);

  }

  sheet.getRange(6, 13, results.length, GAMetrics[0].length).setValues(results);   // populate results on spreadsheet
  emailLog('don@test.com','startDate');

}

function readDateRanges(sheet){
  var rowStart = 6;
  var columnStart = 1;
  var numRows = sheet.getLastRow() - rowStart + 1;

  return sheet.getRange(rowStart, columnStart, numRows, 2).getValues();
}

function readProfileIds(sheet) {
  var rowStart = 6;
  var columnStart = 3;
  var numRows = sheet.getLastRow() - rowStart + 1;

  return sheet.getRange(rowStart, columnStart, numRows, 1).getValues();
}

function readGAMetrics(sheet) {
  var rowStart = 2;
  var columnStart = 13;
  var numColumns = sheet.getLastColumn() - columnStart + 1;

  return sheet.getRange(rowStart, columnStart, 3, numColumns).getValues();
}

function dateToYMD(date) {
    var d = date.getDate();
    var m = date.getMonth() + 1;
    var y = date.getFullYear();
    return '' + y + '-' + (m<=9 ? '0' + m : m) + '-' + (d <= 9 ? '0' + d : d);
}

function appendArray(a1,a2) {

  var startSize = a1.length;
  for (var i = 0; i < a2.length; i++)
    a1[startSize + i] = a2[i];

}

function emailLog(emailAddress,reportDate) {

 var recipient = emailAddress; // Session.getActiveUser().getEmail();
 var subject = 'GA Data Pull - extract for ' + reportDate;
 var body = Logger.getLog();

 MailApp.sendEmail(recipient, subject, body);

}
函数getGAData(){ var sheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(“测试数据”); //var startDate=dateToYMD(sheet.getRange(3,3.getValue()); //var endDate=dateToYMD(sheet.getRange(3,4.getValue()); var dateRanges=readDateRanges(表); var profileIds=readProfileIds(表); var GAMetrics=readGAMetrics(表); var结果=[]; var度量=[]; var optArgs=[]; var filterCount=0; var prevFilter='**无**'; 变量i,j,k; var分析结果; var结果; 对于(i=0;i