如何在Google表格中接受可变数量的参数

安德烈亚斯·库尔兹(Andreas Kurz)

我正在构建一个解决方案,其中添加到HTTP get请求的参数数量是可变的。这意味着url可以携带1到n个参数。URL中的参数由标准名称和附加索引标识。这是一个示例URL:

https://script.google.com/macros/s/xxxxxxx/exec?fileName=2020-12-15&fridgeItems=2&fridgeItem0=ValueOfFridgeItem0&fridgeItem1=ValueOfFridgeItem1

如何在.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]);
     );
   }
 }
}
am

目标:

发出GET请求时,您要创建一个新的电子表格,其名称将是请求参数键的值fileName,并且所有其他请求参数中的所有其他值将附加到创建的电子表格的唯一工作表中。

问题:

解:

  • 使用delete运算符fileName从对象中检索值并从该对象中删除此属性request.parameter
  • 由于您需要其余参数的值,因此可以使用Object.values()来检索具有这些值的数组。
  • 使用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

然后,您可以结合使用mapfilter来检索值(不包括对应于的值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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在Julia中编写一个接受可变数量参数的函数?

如何在r中打印可变数量的参数?

如何在Django查询中处理可变数量的参数

如何在pyinvoke中使用可变数量的参数

如何在java反射中从可变数量的参数中获取方法

如何在C#中运行可变数量的并发参数化无限循环类型的线程?

如何在函数中解压缩可变数量参数 (*args) 的元组?

如何在C ++ 11中实现可变参数模式以将可变数量的参数转发给函数?

如何使用expressJS在url中添加可变数量的参数?

如何在MLP中创建可变数量的层

如何在Go中同步可变数量的频道?

如何处理可变数量的参数

C程序中可变数量的参数

函数中可变数量的参数

C ++中可变数量的参数?

Swift方法中可变数量的参数

C中可变数量的参数?

如何创建一个接受可变数量参数的Java方法?

如何使用duktape使原生javascript函数接受可变数量的参数?

如何制作可变参数宏(可变数量的参数)

带有argparse的Python中的一个参数如何有可变数量的参数?

在Lua中,如何获取所有参数(包括nil表示可变数量的参数)?

传递可变数量的参数

如何在jQuery中为变量分配复选框数量的可变数量?

如何在YARD中用可变数量的参数记录一个函数?

如何在JSDoc中注释具有可变数量参数的Function类型的对象?

如何在Elixir中使用可变数量的参数指定回调

如何在WebAPI中将可变数量的参数传递给GET

如何编写一个函数,该函数接受可变数量的参数(整数)并使用stdargs输出它们?