[英]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 上的行集,而不仅仅是第一行(请参见下图):
我想提出以下修改。
getValues()
而不是getValue()
。getValues()
检索的值是二维数组。 在您的情况下,这些值是从一列中检索的。 所以在这种情况下,值就像[[AA2],[AA3],,,]
。0
到lr
完成的。 但在query.getRange("AA2:AA" + lr).getValue()
的情况下, data
是AA2
单元格的值。 因此使用来自同一单元格的值。 我认为这是您的问题的原因。当以上几点反映到您的脚本时,它变成如下。
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.