Получить возвращаемое значение из модальной диалоговой страницы - PullRequest
0 голосов
/ 19 мая 2019

Я смотрю несколько уроков и страниц о том, как открыть модальный диалог с помощью GAS. Моя цель довольно проста. Я хочу открыть диалоговое окно с полем. Пользователь вводит значение, и я получаю его на следующих шагах моего скрипта.

В моей таблице

function openDialog() {
  var html = HtmlService.createHtmlOutputFromFile('datePaiementDlg');
  SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
      .showModalDialog(html, 'Dialog title');

}
function returnDatePaiementDlg( values)
{
  Logger.log(values);
  Browser.msgBox(values);
}

HTML-страница:

<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
</head>
<body>

<form>
   <input type="date" name="datePaiement"/>

   <input type="submit" value="Envoyer" class="action" onclick="form_data()" />
   <input type="button" value="Fermer"  class="action" onclick="closeIt()" />
</form>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js" />
<script>
function form_data(){
  var values = $("input[name=datePaiement]).val();
  google.script.run
  .withSuccessHandler(closeIt)
  .returnDatePaiementDlg(values);
};
function closeIt(){
google.script.host.close();
};
</script>
</body>
</html>

Я запускаю функцию openDialog () из пункта меню в электронной таблице Google. Когда я нажимаю кнопку «Отправить», открывается новая пустая страница. Если я вернусь на свою страницу электронной таблицы, диалоговое окно все еще будет открыто (оно должно быть закрыто, нет?)

Тогда еще один вопрос: я хочу использовать значение, введенное пользователем после showModalDialog (). Но я не могу понять, как, так как кнопка «Отправить» вызывает другую функцию (returnDatePaiementDlg ()). Как я могу сделать "ссылку"?

Я что-то забыл ... что?

Спасибо

1 Ответ

0 голосов
/ 20 мая 2019

Попробуйте это:

function askAQuestion() {
  var ss=SpreadsheetApp.getActive();
  var html='<select id="sel1" onchange="sendChoice()">'
  html+='<option value="no Choice">Make a Choice</option>';
  html+='<option value="Sheet1">Sheet1</option>';
  html+='<option value="Sheet2">Sheet2</option>';
  html+='<option value="Sheet3">Sheet3</option>';
  html+='</select>';
  html+='<script>function sendChoice() { var choice=document.getElementById(\'sel1\').value;google.script.run.withSuccessHandler(function(){google.script.host.close();}).displayChoice(choice);}console.log(\'My Code\');</script>';
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Make a Choice');
}

function displayChoice(choice) {
  SpreadsheetApp.getUi().alert(choice);
  return;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...