繁体   English   中英

通过 Measurement Protocol 向 Google Analytics 发送匹配的循环

[英]Loop for sending hits to Google Analytics via Measurement Protocol

我是 Apps 脚本的新手,我正在尝试通过 Measurement Protocol 向 Google Analytics 发送一组点击。 点击被验证并且一切正常,但是我错过了循环的一部分,以便发送许多请求而不仅仅是第一行,这就是现在正在发生的事情。

我很确定 for 循环不起作用,但我正在努力解决这个问题。

function measurementprotocolrequest() {
  var nsheet = "1nzUmSH1QTyDKxx5sBkGs5G4uV_JHTkPcHL64sUTbbqY";
  var query = SpreadsheetApp.openById(nsheet).getSheetByName("Query");

  
  var lr = query.getLastRow()
  var data = query.getRange("AA2:AA" + lr).getValue()
  Logger.log(data)
  for(var i = 0;i<=lr;i++){
    
    var options = {
      "method" : "post",
      "payload" : data
    };
    UrlFetchApp.fetch("https://www.google-analytics.com/collect", options);}
  
}

目标是发送列 AA 上的行集,而不仅仅是第一行(请参见下图):

谷歌电子表格打印屏幕

我想提出以下修改。

修改点:

  • 为了检索单元格“AA2:AA”的值,请使用getValues()而不是getValue()
  • getValues()检索的值是二维数组。 在您的情况下,这些值是从一列中检索的。 所以在这种情况下,值就像[[AA2],[AA3],,,]
  • 在您的脚本中,循环是从0lr完成的。 但在query.getRange("AA2:AA" + lr).getValue()的情况下, dataAA2单元格的值。 因此使用来自同一单元格的值。 我认为这是您的问题的原因。

当以上几点反映到您的脚本时,它变成如下。

从:

var lr = query.getLastRow()
var data = query.getRange("AA2:AA" + lr).getValue()
Logger.log(data)
for(var i = 0;i<=lr;i++){

  var options = {
    "method" : "post",
    "payload" : data
  };
  UrlFetchApp.fetch("https://www.google-analytics.com/collect", options);}

至:

var lr = query.getLastRow();
var data = query.getRange("AA2:AA" + lr).getValues();
for (var i = 0; i < data.length; i++) {
  var options = {
    "method": "post",
    "payload": data[i][0]
  };
  UrlFetchApp.fetch("https://www.google-analytics.com/collect", options);
}

或者,当你想使用GET方法时,我认为也可以使用以下修改。

var lr = query.getLastRow();
var data = query.getRange("AA2:AA" + lr).getValues();
for (var i = 0; i < data.length; i++) {
  UrlFetchApp.fetch("https://www.google-analytics.com/collect?" + data[i][0]);
}

笔记:

  • 以上修改后的脚本假设data可用于测量协议。 请注意这一点。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM