Вот простой пример, который довольно близок к вашему коду и работает. Я начал с вашего html и изменил несколько мест.
Code.gs:
function onOpen() {
SpreadsheetApp.getUi().createMenu('My Tools')
.addItem('Start Dialog', 'startDialog')
.addItem('grabData','grabData')
.addToUi();
}
function startDialog() {
var userInterface=HtmlService.createHtmlOutputFromFile('zzzz');
SpreadsheetApp.getUi().showModelessDialog(userInterface, 'zzzz');
}
Я получаю варианты выбора из Sheet1 Column1
function getSelectOptions() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1');
var rg=sh.getRange(1,1,sh.getLastRow());
var vA=rg.getValues().map(function(r){return r[0];});
return vA;
}
function saveData(v) {
PropertiesService.getScriptProperties().setProperty('DropJob', v);
Logger.log(v);
return v;
}
Iзарегистрировал v, оставляя сторону клиента и возвращаясь только, чтобы удостовериться, что я получал это. И grabData () просто отображает содержимое свойств скрипта, и пользовательские свойства также работают.
function grabData() {
var data=PropertiesService.getScriptProperties().getProperty('DropJob');
SpreadsheetApp.getUi().alert('Current Data is ' + data);
}
HTML: zzzz.html
<html>
<head>
<base target="_top">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.js"></script>
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
</head>
<body>
<form>
<select id="dropJob" name="dropdown">
<option value=""></option>
</select>
<br>
<br>
<input type="button" value="Submit" class="action" onClick="sendData();" />
Я изменил вышеуказанный тип кнопки.
<input type="button" value="Close" onclick="google.script.host.close();" />
</form>
<script>
var gv='';
$(function() {
$('#dropJob').val('');
google.script.run
.withSuccessHandler(updateSelect)
.getSelectOptions();
});
function updateSelect(vA) {//this is where the dropdown gets loaded
var select = document.getElementById("dropJob");
select.options.length = 0;
for(var i=0;i<vA.length;i++)
{
select.options[i] = new Option(vA[i],vA[i]);
}
}
function sendData(){
var value = document.getElementById("dropJob").value;
console.log('value: %s',value);
google.script.run
.withSuccessHandler(function(v){
console.log('value: %s',v);
gv=v;//if you want to pass the last selected value back to Javascript
google.script.host.close();
})
.saveData(value);
}
Я использовал анонимную функцию в SuccessHandler выше.
console.log('My Code');
</script>
</body>
</html>
Есть некоторые изменения, так что внимательно их изучите. Я надеюсь, что это поможет вам.