** ОБНОВЛЕНО ** У меня есть форма html, которая добавляется в лист Google при его отправке. В настоящее время одно из полей (выбор имени студента) принимает несколько значений (которые я бы хотел разместить в отдельных строках на странице Google), но отображается только первое выбранное значение. Я не уверен, как сделать так, чтобы множественные выборы отображались в виде отдельных строк.
Вот код html для формы. Параметры STUDENT NAME [] заполняются функцией, которая извлекает имена из списка (здесь не показано).
<form id = "entry" name="entry" style="display:none">
<b>Select Date:</b> <input type = "date" id = "date" name = "Date[]">
<b>Your Name: </b> <input type = "text" id = "person" name = "Name[]">
<!-- Student Name Selection Section -->
<b> Student Name:</b>
<select multiple size = "10" id = "students" name = "Student Name[]" ></select>
<br><b>Type: </b>
<input type = "text" id = "type" list = "typeList" name = "Type[]">
<datalist id = "typeList">
<option name = "Baseline">Baseline</option>
<option name = "Trial">Trial</option>
</datalist>
<br>
<!-- Domain/Unit/Skill Section (dependent on previous selection) -->
<br><b>Domain: </b>
<input type = "text" id="domain" list = "domainList" onchange="getUnits($('#domain').val())" name = "Domain[]">
<datalist id = "domainList"></datalist>
<br><b>Unit: </b>
<input type = "text" id ="unit" list = "unitList" onchange="getSkills($('#unit').val())" name = "Unit[]">
<datalist id = "unitList"></datalist>
<br><b>Skill: </b>
<input type = "text" id="skill" list = "skillList" name = "Skill[]">
<datalist id = "skillList"></datalist>
<br><b>Prompting Level: </b>
<input type = "text" id = "promptingLevel" list = "promptingLevelList" name = "Prompting Level[]">
<datalist id = "promptingLevelList"></datalist>
<!-- <input type = "button" id = "addline" value = "Add Another Entry"> -->
<input id="submit" type="submit" value="Submit" class="btn btn-info">
</form>
Следующая часть, в которой публикуется запись:
//post submission
const form = document.forms["entry"];
$('#entry').submit(function(e){
e.preventDefault(); fetch('https://script.google.com.....',
{method: 'POST', mode: 'no-cors', body: new FormData(form)})
.then(response => console.log('Success!', response))
.catch(error => console.error('Error!', error.message))
});
А затем в скрипте Служб Google это срабатывает при отправке формы:
var sheetName = 'Submissions';
var scriptProp = PropertiesService.getScriptProperties()
function intialSetup () {
var activeSpreadsheet = SpreadsheetApp.getActiveSpreadsheet();
scriptProp.setProperty('key', activeSpreadsheet.getId());
}
function doPost (e) {
var lock = LockService.getScriptLock()
lock.tryLock(10000)
try {
var doc = SpreadsheetApp.openById(scriptProp.getProperty('key'))
var sheet = doc.getSheetByName(sheetName)
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 ContentService
.createTextOutput(JSON.stringify({ 'result': 'success', 'row': nextRow }))
.setMimeType(ContentService.MimeType.JSON)
}
catch (e) {
return ContentService
.createTextOutput(JSON.stringify({ 'result': 'error', 'error': e }))
.setMimeType(ContentService.MimeType.JSON)
}
finally {
lock.releaseLock()
}
}
Я добавил [] в конец имен полей в форме, но я не уверен, что делать дальше.