【问题标题】:Google Apps Script webapp is converting submitted data values to arrayGoogle Apps Script webapp 正在将提交的数据值转换为数组
【发布时间】:2021-04-24 17:10:21
【问题描述】:

我的网站上有一个表单,可以将其数据提交给 Google 应用脚本,然后该脚本会执行一些操作并将状态返回给网页。出于某种原因,当它读取提交的数据时,它会将每个值转换为仅包含该值的数组。例如:

{
  fname: "danny",
  lanme: "tester"
}

正在转换为

{
  fname[]: ["danny"],
  lanme[]: ["tester"]
}

** 也不是[] 被附加到属性名称;


这是一个简单的例子

HTML

<form>
  <input type="text" name="fname"> <input type="text" name="lname">
  <submit>
</form>

JavaScript

var payload = {
  fname: $('[name="fname"]').val(),
  lname: $('[name="lname"]').val()
}

$('form').submit(function() {
  $.ajax({
      url: 'https://script.google.com/macros/s/SCRIPT_ID/exec',
      data: payload
      method: 'GET"',
      dataType: 'jsonp',
      success: function(data) {
        console.log(JSON.parse(data.body));
     }
  });
});

Google Apps 脚本

function doGet(e) {
  var data = e.parameters;
  return ContentService     
   .createTextOutput(JSON.stringify(data))
   .setMimeType(ContentService.MimeType.JAVASCRIPT); 
}

运行时,将以下内容写入控制台:

{fname: Array(1), lname: Array(1)}

并扩展它产生

  fname: ["danny"]
  lanme: ["tester"]

在 Google Apps 脚本中进行转换很容易,但如果知道为什么会这样,那就太好了。有什么想法吗?

【问题讨论】:

    标签: json ajax google-apps-script


    【解决方案1】:

    这就是parameters 属性的工作方式。

    您可以通过替换来更改您的 doGet 函数

    var data = e.parameters;
    

    通过

    var data = {
       fname:e.parameter.fname,
       lname:e.parameter.lname
    };
    

    或通过

    var data = {};
    Object.keys(e.parameter).forEach(key => data[key] = e.parameter[key]);
    

    资源

    【讨论】:

    • 明白了。是的,我正在做类似于第二个建议的事情 - 只是确保它是完全必要的。谢谢!!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多