2 шага, которые вы описали, должны быть реализованы как отдельные функции.
Я собрал небольшой пример, первоначально основанный на вашем примере, но немного исправленный.
Требуемый поток программы:
- На стороне сервера вызовите функцию
showDialog()
для отображения диалогового окна (через меню или иным способом) - Вкл. на стороне клиента вызовите функцию
updateDocumentClassification()
через google.script.run
и передайте элемент формы для обработки на стороне сервера (который будет преобразован в объект )
Вот пример :
Code.gs
function showDialog() {
var dialog = HtmlService.createHtmlOutputFromFile('dialog')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(200)
.setHeight(150);
SlidesApp.getUi()
.showModalDialog(dialog, 'Document Classification');
}
function updateDocumentClassification(formObject) {
var classification = formObject.documentClass;
SlidesApp.getActivePresentation().replaceAllText(
'Document Classification: UNDEFINED',
'Document Classification: ' + classification,
true);
}
function onOpen() {
SlidesApp.getUi()
.createMenu('Replace Test')
.addItem('Replace Text...', 'showModalDialog')
.addToUi();
}
. html
<!DOCTYPE html>
<html>
<head>
<base target="_top">
</head>
<body>
<form id="docType" onSubmit="handleFormSubmit(this)">
<select id="selectDocumentType" name="documentClass">
<option value="PUBLIC">Public</option>
<option value="INTERNAL">Internal</option>
<option value="CONFIDENTIAL">Confidential</option>
<option value="SECRET">Secret</option>
</select>
<hr/>
<input type="submit" value="Submit" />
</form>
</body>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script>
function handleFormSubmit(formObject) {
google.script.run
.withSuccessHandler(closeDialog)
.updateDocumentClassification(formObject);
$('#formDocumentType :submit').attr('disabled', true);
}
function closeDialog(){
console.log('Closing dialog...');
google.script.host.close();
}
</script>
</html>