Я пытаюсь сгенерировать список опций для выпадающего меню в функции, запускаемой из боковой панели. Я хочу, чтобы список был динамичным. У меня есть список в листе «данных» в электронной таблице, и я могу запустить скрипт вне HTML-кода, который просто отлично извлекает нужные мне данные, но я не могу понять, как загрузить это в список опций. Я работал над этим часами сегодня, и теперь я НАСТОЯЩИЙ СМЕТЬ. Я даже не уверен, имеют ли смысл сценарии, которые я здесь показываю, потому что я попробовал так много разных подходов, чтобы заставить это работать.
Code.gs:
function createNewInv() {
// var values = getColValues('DataVal',1);
// var listValues = getListValues(values);
// Logger.log(values);
ss = SpreadsheetApp.getActiveSpreadsheet();
var html = HtmlService.createHtmlOutputFromFile('Invoice Form.html')
// html.status = status;
// var evhtml = html.evaluate();
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setHeight(450)
.setWidth(300)
.setTitle('Enter a New Invoice')
ss.show(html);
function getColValues(sheet, col) {
var sheet = ss.getSheetByName(sheet);
var headers = sheet.getRange(1, 1, 1, sheet.getLastColumn()).getValues()[0];
//var col = headers.indexOf(header) + 1;
var col = col;
try {
var values = sheet.getRange(2, col, sheet.getLastRow() - 1, 1).getValues();
var valueArray = [];
for (var i = 0; i < values.length; i++) {
if (values[i][0] != "") {
valueArray.push(values[i][0]);
}
}
return valueArray;
}
catch (err) {
return ["no data in column:" + header];
}
}
<!DOCTYPE html>
<html>
<div>
<b>Add Invoice: </b><br />
<form autocomplete="on" >
Status: <br />
<select id='status' name='status'>
<option>...</option>
</select>
<br />
</form>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
// The code in this function runs when the page is loaded.
$(function() {
google.script.run.withSuccessHandler(showThings)
.getColValues('DataVal',1);
Logger.log(values);
});
function showThings(things) {
google.script.run.withSuccessHandler(function(getColValues('DataVal',1))){
var list = $('#status');
list.empty();
for (var i = 0; i < things.length; i++) {
list.append(new Option(things[i],things[i]));
}
return list;
}
}
</script>
Может кто-нибудь помочь мне разобраться в этом беспорядке, который я сделал ??