小编Jin*_*ček的帖子

如何通过 urlfetchapp 发送带有有效负载中的数组的 post 请求

我需要模拟从 html 表单到页面的 post 请求。我需要知道如何在有效负载中正确发送数组。提前致谢..

我有简单的 html 代码,目标页面将以这种方式收到提交:

{
  "args": {}, 
  "data": "", 
  "files": {}, 
  "form": {
    "Link[]": [
      "picturelink1.png", 
      "picturelink2.png", 
      "picturelink3.png"
    ], 
    "animationtype": "link", 
    "size": "400", 
    "speed": "0.4", 
    "usersize": "", 
    "userspeed": "0.1"
  }
}
Run Code Online (Sandbox Code Playgroud)

我在 GAS 中编写了代码,它应该模拟相同的请求:

var payload =
      {       
        "Link[]":["jovianarchive_com/Content/Charts/621903744000000000_png","jovianarchive_com/Content/Charts/621903708000000000_png","jovianarchive_com/Content/Charts/621903816000000000_png"],  
        "animationtype":"link","size":"300","speed":"1","usersize":"","userspeed":""
      }

   var options =
   {
     "method" : "post",
     "payload" : payload
   };
  var result = (UrlFetchApp.fetch("http://httpbin.org/post", options).getContentText());
Run Code Online (Sandbox Code Playgroud)

这将返回此请求:

{
  "args": {},    
  "data": "",
  "files": {},
  "form": { "Link[]": "[Ljava.lang.Object;@536733f2",
  "animationtype": "link",
  "size": "300",
  "speed": "1",
  "usersize": …
Run Code Online (Sandbox Code Playgroud)

google-apps-script

5
推荐指数
1
解决办法
2623
查看次数

添加上面的新行后,如何获取范围的实际位置

考虑这种情况。

  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange("2:2");
  var values = range.getValues();
  values[0][0] = "updated value"; //updating retrieved data
  sheet.insertRowAfter(1); //here the problem appears
  range.setValues(values); //trying to save updated row data - FAIL!
Run Code Online (Sandbox Code Playgroud)

更新后的行值将被写入第2行(根据范围选择器“ 2:2”),而不是在新位置“ 3:3”。结果:它将覆盖第二行的数据,而不是更新先前选择/加载的行,该行现在位于位置“ 3:3”,而不再位于“ 2:2”。

我正在寻找一种方法,即使由于在工作表中其他位置添加/删除的行/单元格而移动了范围时,也该如何保持范围的“地址”。

在此虚拟示例中,我可以跟踪范围变化。但是在并行处理/更新工作表中,我不能简单地跟踪来自许多不同地方的所有更改。

到目前为止,我想出了一个解决方案,仅在SS的末尾添加新行(这不会更改上面任何行的范围,但是我希望能够在表格顶部添加新行而不影响已经选择的范围。行也是危险的情况-它也会改变范围的位置。

LockService不能真正解决这种情况,因为我在同一张工作表上有很多脚本(由于插件的速度性能,不使用集中式库)。

单元格或行的元数据似乎太复杂了,无法完成如此简单的任务。

从我的角度来看,即使对象范围移动/移动到其他位置,它也应保持其位置。否则,我看不到将Range作为对象的原因-如果它仅保留有关从何处拾取的固定信息。欢迎任何建议。先感谢您..

编辑:

仅添加上下文。我使用Google表格作为订单的数据库(到目前为止有1万个)-每行表示一个订单(客户),而并非所有订单都在一张表格中-不同的产品具有不同的表格(+-10个产品/表格)

有一个建议使用命名范围来解决此问题-那么,如果电子表格将具有成千上万个命名范围,会发生什么情况-在没有严重的性能问题的情况下可以正常工作吗?我正在考虑为每个订单行创建命名范围,因此我可以轻松地按orderId选择正确的行,而不必担心在处理另一个订单时新订单到达时移动一行

google-sheets google-apps-script

5
推荐指数
1
解决办法
114
查看次数

标签 统计

google-apps-script ×2

google-sheets ×1