是否可以在for(var in range)中向i添加偏移量以将连续的e.parameters发布到唯一的电子表格单元格?

阿利斯泰尔·伊恩·德格·布朗利

我有一个网址,其中的参数已过帐到我的Google App脚本中,其中包含人物姓名,他们的年龄,地址,电话号码等。

在电子表格上,我想将每个人的姓名设置在唯一的行和单元格上,并将每个人的详细信息设置在同一行中自己的唯一列和单元格中。

我尝试通过向e.parameters的索引添加偏移量来设置每个单元格的值。即var val = e.parameters(i + 1)但该值未定义,因为我不确定这是否是找到偏移量索引的正确语法。

有两个问题:如何找到i的相邻值并将其设置为唯一的单元格?如何将我递增到姓氏?

我应该使用for循环而不是for / in吗?

https://script.google.com/macros/s/AKfycbwFxca76urW8A4TnRpU7y7DnDT7A_rO_rx1NNDAz9D70Y8b1u4/exec?name1=Johnny&age1=21&address1=21+Jump+Street&phonnenumber1=555-5555&name2=Nick&age2=180&address2=North+Pole&phonenumber2=555-55554&
name2=Charlie&age3=180&address3=WillyW+Wonkas&phonenumber1=555-55553

脚本:

function doPost(e)
{
var sl = e.parameter;



 var props = PropertiesService.getScriptProperties();
 var ssNew, ssId = props.getProperty('ssId');    

 if (ssId) 

 {
    ssNew = SpreadsheetApp.openById(ssId);
    var sheet = ssNew.getSheets()[0];
   var range = sheet.getRange("A2:D100");
   range.clearContent();
   var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues(); 

   for (var row in headers) {
   for (var col in headers[row]) {

  var cell = sheet.getRange('a1');
  var col = 0;

      for (var i in e.parameters) {
      var nextRow = sheet.getLastRow();  
      val = Utilities.formatDate(new Date(), "GMT-7", "yyyy-MM-dd' 'HH:mm:ss");
        cell.offset(nextRow, col).setValue(val);
      col++;
       val = e.parameters[i];
        // get next row

       cell.offset(nextRow, col).setValue(val);
       col++; 
       val = e.parameters[i+1];
        // get next row

       cell.offset(nextRow, col).setValue(val); 
        col++; 
       val = e.parameters[i+2];
        // get next row

       cell.offset(nextRow, col).setValue(val);
       col = 0; 

    }    
    }
   }
   }


  else 
  {  
    ssNew = SpreadsheetApp.create("Contact List");
    props.setProperty('ssId', ssNew.getId());
  }  

}
用户名

尚不清楚为什么在发出POST请求时将参数放在查询字符串中,但这并不重要。doPost函数接收的事件对象如下:我只是通过登录获得的JSON.stringify(e)

如您所见,e.parameter和e.parameters都不是数组,因此e.parameters[i+1]没有任何意义。它们是对象,键是参数名称。您也可以通过阅读文档来学习因此,您的Web应用程序必须知道键名,并正确使用它们。

一种选择是始终使用“年龄”,“姓名”,“地址”,“电话号码”,而不附加1,2,3。然后e.parameters.age将是一个所有年龄e.parameters.name的数组一个所有名称的数组,等等。

脚本中行/列的逻辑看起来还不错,尽管我会使用更简单的方法sheet.getRange(row, column)而不是使用offset。

事件对象:

{
    "parameter": {
        "phonenumber2": "555-55554",
        "phonenumber1": "555-55553",
        "address3": "WillyW Wonkas",
        "address2": "North Pole",
        "address1": "21 Jump Street",
        "age3": "180",
        "name2": "Nick",
        "name1": "Johnny",
        "phonnenumber1": "555-5555",
        "age2": "180",
        "age1": "21"
    },
    "contextPath": "",
    "contentLength": -1,
    "queryString": "name1=Johnny&age1=21&address1=21+Jump+Street&phonnenumber1=555-5555&name2=Nick&age2=180&address2=North+Pole&phonenumber2=555-55554&name2=Charlie&age3=180&address3=WillyW+Wonkas&phonenumber1=555-55553",
    "parameters": {
        "phonenumber2": ["555-55554"],
        "phonenumber1": ["555-55553"],
        "address3": ["WillyW Wonkas"],
        "address2": ["North Pole"],
        "address1": ["21 Jump Street"],
        "age3": ["180"],
        "name2": ["Nick", "Charlie"],
        "name1": ["Johnny"],
        "phonnenumber1": ["555-5555"],
        "age2": ["180"],
        "age1": ["21"]
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章