簡體   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