繁体   English   中英

使用选择多个使用谷歌应用程序脚本将多个值发送到谷歌表格

[英]Using select multiple to send multiple values to google sheets using google apps script

我正在尝试使用多个选择器使用谷歌应用程序脚本将数据发布到谷歌表,如下所示:

代码.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() }

}

表格.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 和 M5 并单击提交按钮时,我只在工作表中收到 M1,而不是像 M1、M3、M5 那样收到所有选定的值

表: https : //docs.google.com/spreadsheets/d/1FdOH2zU_ZnxB2a7RA_QfO3HdPTRhVhSHo5988a8Au9s/edit?usp=sharing

该表是可编辑的,所以请随意使用。 请任何帮助非常感谢。 提前致谢

我相信你的目标如下。

  • 您想将多选值的所有值放入单元格。

我认为您的新问题的原因是e.parameter[header] 在这种情况下, e.parameter只是所选值中的一个值。 所以请修改如下。

从:

return header === 'Timestamp' ? new Date() : e.parameter[header]

到:

return header === 'Timestamp' ? new Date() : e.parameters[header].join(",");

笔记:

  • 当您修改 Web Apps 的脚本时,请将 Web Apps 重新部署为新版本。 这样,最新的脚本就会反映到 Web Apps 中。 请注意这一点。

参考:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM