Как получить предупреждающее сообщение, содержащее html и кнопку "да / нет" в электронной таблице Google, которая останавливает выполнение скрипта, пока пользователь не нажмет "да" или "нет"?
Я отправляю электронные письма в формате html из таблицы Google, и для определенной группы я хочу сначала просмотреть предварительный просмотр перед его отправкой. Сценарий для отправки электронных писем может быть вызван нажатием пункта меню в электронной таблице. Поэтому я хочу создать всплывающее окно, содержащее HTML-сообщение и кнопку для отправки электронного письма, да или нет. Это относится к нескольким электронным письмам, поэтому сценарий должен ждать ввода пользователя, прежде чем показывать следующее электронное письмо.
Я могу использовать функцию оповещения из Ui-класса, проблема в том, что он принимает только строку для сообщения, а не HTML. Но предупреждение останавливает выполнение кода, пока пользователь не введет данные.
Другой вариант - функция showModelDialog из Ui-класса, здесь я могу указать html в качестве параметра, но google-apps-script не прекращает выполнение, поэтому в результате я увижу всплывающее окно только для последнего письма.,
Функция оповещения не является опцией, потому что я не могу дать html в качестве параметра, поэтому showModelDialog - лучший выбор. Возможные не очень красивые решения, которые я нашел с помощью showModelDialog, используют функцию сна из класса Utilities между каждым всплывающим окном или отправляют только одно электронное письмо каждый раз, когда функция вызывается.
Есть ли решение, в котором я могу показать всплывающее окно с html-письмом, и скрипт приложений перестает выполняться, пока не получит ввод от пользователя?
2 ответа
Это может быть достигнуто с showModelDialog
сам.
Вы можете поместить функцию отправки почты в функцию скажем sendMail.
Теперь добавьте кнопку для вызова этой функции на onclick
событие.
<input id="btn" type="button" value="Send" onclick="google.script.host.close()" />
Для получения дополнительной информации обратитесь
Пользовательские диалоги в скрипте Google Apps
Класс google.script.run (клиентский API)
ui.prompt
кажется хорошим решением для этого случая
var ui = SpreadsheetApp.getUi();
var response = ui.prompt('Email confirmation', 'Are you sure to send the mail?', ui.ButtonSet.YES_NO);
if (response.getSelectedButton() == ui.Button.YES) {
Logger.log('The user responded positively');
// call the function to send mail here
} else if (response.getSelectedButton() == ui.Button.NO) {
Logger.log('The user gave negative response');
// Do some cleanup?
} else {
Logger.log('The user clicked the close button in the dialog\'s title bar.');
}
Как функции для отправки почты вызывается внутри if else
условие, которое требует оценки ответа, вы можете быть уверены, что оно не будет выполнено.