В Google Sheet я создал скрипт для приложений, чтобы открыть HTML-форму в диалоговом окне.Наряду с некоторыми полями ввода в форме есть две кнопки - Сохранить / Выйти и Сохранить / Далее.
В то время как кнопки должны запускать различные функции на стороне сервера, обе должны закрывать диалоговое окно, как только сервер подтвердит получение.Тем не менее я обнаружил, что функции сервера вообще не работают, но, по-видимому, с помощьюSuccessHandler все равно срабатывает!
Сокращенный код: Code.gs
function newProposal() {
var html = HtmlService.createHtmlOutputFromFile('frmBackground').setHeight(500).setWidth(1000);
SpreadsheetApp.getUi()
.showModalDialog(html, 'New Proposal');
}
function saveBackground(e) {
SpreadsheetApp.getActive().toast("hello");
Logger.log(e);
sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Project Data");
var alast = sheet.getRange("A3:A").getValues().filter(String).length;
var inpCell = sheet.getRange("A" + (3+alast))
inpCell.setValue(sheet.getRange("A" + (2+alast)).getValue()+1);
inpCell = sheet.getRange("B" + (3+alast));
inpCell.setValue(e.Opportunity)
}
frmBackground.html
<!DOCTYPE html>
<html>
<body>
<form>
<h2 style="text-align: center;"><span style="color: #800080;">PROJECT BACKGROUND</span></h2>
<p> </p>
<table style="height: 172px;" width="778" cellpadding="10">
<tbody>
<tr>
<td style="width: 187px;">
<p style="text-align: right;"><strong><span style="color: #800080;">Project Start Date:</span></strong></p>
</td>
<td style="width: 187px;"><input name="inp_Start" type="date" /></td>
<td style="width: 188px;"><strong><span style="color: #800080;">Opportunity ID:</span></strong></td>
<td style="width: 188px;"><input name="inp_Opportunity" size="3/" type="text" /> <strong><span style="color: #800080;"> months</span></strong></td>
</tr>
.
.
.
</tbody>
</table>
<p> </p>
<p style="text-align: center;">
<input type="button" value="Save and Return" onclick="google.script.run.withSuccessHandler(google.script.host.close).saveBackground()"/>
<input type="button" value="Save and Continue" onclick="google.script.run.withSuccessHandler(google.script.host.close()).saveBackgroundNext()"/></p>
</form>
</body>
</html>
То, что я ожидаю, произойдет: код в saveBackground () и saveBackgroundNext () должен быть запущен.Диалог не должен закрываться, потому что я еще не написал возвращаемое значение.
То, что я тоже пробовал:
- Устранение .withSuccessHandler и просто запрос кнопки для запуска Google.script.run.saveBackground () сам по себе.Нет ответа.
- Создание раздела с функцией в html, которая пытается выполнить google.script.run.Нет ответа.
- Изменение .withSuccessHandler для удаления () после закрытия.Ответа нет, но ожидается, потому что нет сообщения об успешном запуске, которое его вызвало бы.