我有一个网址,其中的参数已过帐到我的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] 删除。
我来说两句