Как получить предупреждающее сообщение, содержащее 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 условие, которое требует оценки ответа, вы можете быть уверены, что оно не будет выполнено.

Другие вопросы по тегам