Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用“选择多个”使用谷歌应用程序脚本将多个值发送到谷歌工作表_Javascript_Google Apps Script_Google Sheets - Fatal编程技术网

Javascript 使用“选择多个”使用谷歌应用程序脚本将多个值发送到谷歌工作表

Javascript 使用“选择多个”使用谷歌应用程序脚本将多个值发送到谷歌工作表,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,我正在尝试使用多个选择器,使用google apps脚本将数据发布到google工作表,如下所示: 代码G.gs: function doGet() { return HtmlService.createTemplateFromFile('Form.html').evaluate() .setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL); } function doPost (e) { var lock = LockServ

我正在尝试使用多个选择器,使用google apps脚本将数据发布到google工作表,如下所示:

代码G.gs:

function doGet() {
return HtmlService.createTemplateFromFile('Form.html').evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);
}

function doPost (e) {
var lock = LockService.getScriptLock();
lock.tryLock(10 * 1000);
  
try {
var doc = SpreadsheetApp.getActiveSpreadsheet();
var sheet = doc.getSheetByName("Sheet1");
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0]
var nextRow = sheet.getLastRow() + 1
var newRow = headers.map(function(header) {
return header === 'Timestamp' ? new Date() : e.parameter[header]
})
sheet.getRange(nextRow, 1, 1, newRow.length).setValues([newRow])

return HtmlService.createTemplateFromFile('Confirmation.html').evaluate()
.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

}

catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}

finally { lock.releaseLock() }

}
Form.html:

<!DOCTYPE html>
<html lang="en">

<body>

<form name="myForm" action="https://script.google.com/macros/s/AKfycbwamMCkOCAmwrRDNj8cTqgp3cevm8B9niyrlYa5dnbxP2H3q0o/exec" target="_self" method="POST">

<div>
<select name="M Values" multiple required>
<option value="" disabled selected>Select Value(s)</option>
<option value="M1">M1</option>
<option value="M2">M2</option>
<option value="M3">M3</option>
<option value="M4">M4</option>
<option value="M5">M5</option>
<option value="M6">M6</option>
</select>
</div>
<button type="submit">Send</button>

</form>

</body>
</html>

选择值
M1
平方米
M3
M4
M5
M6
发送
问题是,当用户选择许多选项(例如M1、M3和M5)并单击submit按钮时,我只接收工作表中的M1,而不是接收所有选择的值(如M1、M3、M5)

工作表:


该表是可编辑的,因此请随时使用。非常感谢您的帮助。提前谢谢

我相信你的目标如下

  • 您希望将多个选定值的所有值放入单元格
我认为您新问题的原因是由于
e.parameter[header]
。在这种情况下,
e.parameter
只是所选值中的一个值。因此,请修改如下

发件人: 致: 注:
  • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
参考:

    • 我相信你的目标如下

      • 您希望将多个选定值的所有值放入单元格
      我认为您新问题的原因是由于
      e.parameter[header]
      。在这种情况下,
      e.parameter
      只是所选值中的一个值。因此,请修改如下

      发件人: 致: 注:
      • 修改Web应用脚本时,请将Web应用重新部署为新版本。这样,最新的脚本就会反映到Web应用程序中。请注意这一点。
      参考:

      关于
      我试图使用e.postData.contents,但它给了我一个错误:TypeError:无法读取未定义的
      的属性“postData”,在这种情况下,
      e
      未定义的
      。因此,我担心您可能会直接运行
      doPost
      的函数。这个怎么样?如果我的猜测不正确,您能否提供复制您的
      TypeError:cannotreadproperty'postData'(未定义的
      )问题的详细流程?通过这一点,我想确认一下。“所以我担心您可能会直接运行doPost的函数。”是的,我知道,您为什么不推荐呢?“你能提供复制问题的详细流程吗?”我刚刚添加了示例代码中所示的记录器,但我认为我不理解如何在单个单元格中发布值数组的文档谢谢你的回复。从
      “因此我担心您可能会直接运行doPost的功能。”是的,您为什么不建议这样做?
      ,可以找到您出现问题的原因。在您的脚本中,似乎使用了Web应用程序。因此,请使用Web应用程序运行脚本。感谢您的关注和努力。我修改了文档,在部署web应用程序和接收工作表中的输入方面没有问题。问题是,当我从多选择器中选择许多选项(例如M2、M4和M6)时,我只接收工作表中的M2,而不是像M2、M4那样接收完整阵列,M6您可以从这里开始尝试,并在关于
      的问题中共享的电子表格的Sheet1中查看结果。我尝试使用e.postData.contents,但它给了我一个错误:TypeError:无法读取未定义的
      的属性“postData”,在这种情况下,
      e
      未定义的
      。因此,我担心您可能会直接运行
      doPost
      的函数。这个怎么样?如果我的猜测不正确,您能否提供复制您的
      TypeError:cannotreadproperty'postData'(未定义的
      )问题的详细流程?通过这一点,我想确认一下。“所以我担心您可能会直接运行doPost的函数。”是的,我知道,您为什么不推荐呢?“你能提供复制问题的详细流程吗?”我刚刚添加了示例代码中所示的记录器,但我认为我不理解如何在单个单元格中发布值数组的文档谢谢你的回复。从
      “因此我担心您可能会直接运行doPost的功能。”是的,您为什么不建议这样做?
      ,可以找到您出现问题的原因。在您的脚本中,似乎使用了Web应用程序。因此,请使用Web应用程序运行脚本。感谢您的关注和努力。我修改了文档,在部署web应用程序和接收工作表中的输入方面没有问题。问题是,当我从多个选择器中选择许多选项时,例如M2、M4和M6,我只在工作表中接收M2,而不是像M2、M4、M6那样接收完整数组。您可以从这里尝试,并在问卷中共享的电子表格中的Sheet1中查看结果,我不知道如何感谢你的努力和支持。塔奈克,我不知道如何感谢你的努力和支持。
      return header === 'Timestamp' ? new Date() : e.parameter[header]
      
      return header === 'Timestamp' ? new Date() : e.parameters[header].join(",");