【问题标题】:google apps script: setValues from array, taken from html form onSubmit in google sheets谷歌应用程序脚本:从数组中设置值,取自谷歌表格中的 html 表单 onSubmit
【发布时间】:2018-03-13 18:30:02
【问题描述】:

在 Google 表格中,我有一个使用 html 的侧边栏,其表单在提交时运行 processForm(this)。表单是根据工作表中的标题创建的,这就是我使用标题从表单中检索值的原因。在我尝试使用 setValues() 之前,代码似乎工作正常。没有错误,但在那条线上似乎没有发生任何事情。请让我知道我可能做错了什么。谢谢。

function processForm(formObject) {
  var headers = getHeaders();
  var newRow = [];
  for (var i = 0; i < headers.length; i++) {
    newRow.push(formObject["" + headers[i]]); // TODO: convert objects to appropriate formats
  }
  var sheet = SpreadsheetApp.getActiveSheet();
  var range = sheet.getRange(parseInt(formObject.row)+1, 1, 1, headers.length)
  Logger.log(JSON.stringify(newRow)); // example output: ["John","Smith","male","6615554109","","example_email@yahoo.com"]
  range.setValues(newRow); // values not getting set
}

【问题讨论】:

  • 只是为了确定:您显示的示例值是您在记录器中获得的值? object.row 的价值是什么?
  • 是的,这就是记录器中显示的内容。 formObject.row 是我们要放置值的行号。在我测试的示例中,值为 2,这意味着这些值应放在第 3 行。
  • 嗯,这应该可以...不知道为什么现在不行,抱歉;)
  • 如果我正确读取了您的 json 值,它看起来就像一个简单的数组。它应该是一个二维数组,两对括号。尝试 setValues([newrow])。
  • 成功了,谢谢!

标签: arrays forms google-apps-script range setvalue


【解决方案1】:

更改最后一行:

range.setValues([newRow]);

(感谢您的解决方案,Serge insas!)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多