我正在构建一个解决方案,其中添加到HTTP get请求的参数数量是可变的。这意味着url可以携带1到n个参数。URL中的参数由标准名称和附加索引标识。这是一个示例URL:
如何在.gs中的doGet()函数中解释可变数量的参数?
编辑:我想与此请求创建一个新的谷歌表的标题。可变数量的参数应该是列标题。例如,如果请求包含5个参数,我想在google工作表的第一行中将第1至5列的各个参数值添加。
我尝试了以下代码,但无法正常工作:
function doGet(request) {
var FileNameString = request.parameter.fileName; //name of the new .gs file
var FridgeItems = request.parameter.fridgeItems; //amount of parameters/column headers passed to .gs
var sheet = SpreadsheetApp.create(FileNameString);
for(var i=0; i<FridgeItems ; i++){
sheet.getRange(1,i+2)
.setValues(
sheet.appendRow([request.parameter.fridgeItem&i]);
);
}
}
}
发出GET
请求时,您要创建一个新的电子表格,其名称将是请求参数键的值fileName
,并且所有其他请求参数中的所有其他值将附加到创建的电子表格的唯一工作表中。
fileName
从对象中检索值并从该对象中删除此属性。request.parameter
Spreadsheet.appendRow()
以这些价值附加到生成的电子表格。function doGet(request) {
const parameters = request.parameter;
const fileName = parameters.fileName;
delete parameters.fileName;
const headers = Object.values(parameters);
const spreadsheet = SpreadsheetApp.create(fileName);
spreadsheet.appendRow(headers);
return ContentService.createTextOutput("Headers appended!");
}
如果要确保标题的设置顺序与查询中的顺序相同,则可以request.queryString
改用它,它返回URL的查询字符串部分,因此在这种情况下将类似于:
fileName=2020-12-15&fridgeItems=2&fridgeItem0=ValueOfFridgeItem0&fridgeItem1=ValueOfFridgeItem1
然后,您可以结合使用map和filter来检索值(不包括对应于的值fileName
):
function doGet(request) {
const headers = request.queryString.split("&")
.map(param => param.split("="))
.filter(param => param[0] !== "fileName")
.map(param => param[1]);
const fileName = request.parameter.fileName;
const sheet = SpreadsheetApp.create(fileName)
sheet.appendRow(headers);
return ContentService.createTextOutput("Headers appended!");
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句