Скрипт Служб Google: при работе с SuccessHandler без запуска google.script.run.myFunction () - PullRequest
0 голосов
/ 31 января 2019

В 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>&nbsp;</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;">&nbsp;&nbsp;months</span></strong></td>
</tr>
.
.
.
</tbody>
</table>
<p>&nbsp;</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 для удаления () после закрытия.Ответа нет, но ожидается, потому что нет сообщения об успешном запуске, которое его вызвало бы.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...