Ситуация:
Если я вас правильно понимаю, у вас есть диалоговое окно с двумя вариантами, и вы хотите передать информацию о выбранном параметре (в данном случае 2020
или 2021
) в функция на стороне сервера doSomethingWithCompetitionYear();
при нажатии кнопки Submit
.
Проблемы:
В этом случае вам не нужен обработчик успеха. Вам просто нужно передать выбранное значение в качестве параметра doSomethingWithCompetitionYear(theYear);
.
Кроме того, если вы хотите, чтобы это произошло при нажатии кнопки Submit
. Вы должны добавить это к функции closeDia
. В противном случае, doSomethingWithCompetitionYear();
будет выполняться перед отправкой.
Наконец, если вы хотите пропустить следующий год (2021
), а не строку «nextYear», вам придется использовать scriplets в значении элемента.
Модификация 1. Значение следующего года:
Заменить это:
<option value="nextYear"><?= nextYear?></option>
Для этого:
<option value=<?= nextYear?>><?= nextYear?></option>
Изменение 2. Вызов функции на стороне сервера при нажатии кнопки:
Замените это:
<script>
var theYear = document.getElementById("Competition_year").value;
google.script.run.doSomethingWithCompetitionYear();
window.closeDia = function() {
google.script.host.close();
};
</script>
Для этого:
<script>
window.closeDia = function() {
var theYear = document.getElementById("Competition_year").value;
google.script.run.doSomethingWithCompetitionYear(theYear); // theYear parameter has to be passed to server-side function
google.script.host.close();
};
</script>
Примечание:
- Если вы хотите использовать информацию, поступающую из
doSomethingWithCompetitionYear(theYear);
на стороне клиента, вам следует использовать обработчик успеха, который может вызвать функцию на стороне клиента, которая получит эти данные в качестве параметра (на стороне сервера) функция, вызываемая google.script.run
, ничего не возвращает сама по себе, ей нужна функция обратного вызова). Было бы что-то вроде этого:
google.script.run.withSuccessHandler(yourClientSideFunction).doSomethingWithCompetitionYear(theYear);
Ссылка: