- Вы хотите открыть несколько диалогов по порядку.
- Когда процесс завершен в диалоге, вы хотите открыть следующий диалог.
- А именно, вы не хотите открывать следующее диалоговое окно до завершения текущего задания.
Если мое понимание верно, как насчет этого ответа?
Когда SpreadsheetApp.getUi().showModalDialog()
открывается по порядку, диалог перезаписывается. Я думаю, что это является причиной вашей проблемы. Итак, здесь я хотел бы представить пример сценария. В этом примере сценария следующее диалоговое окно открывается из текущего диалогового окна. Процесс этого примера сценария выглядит следующим образом. Пожалуйста, подумайте об этом как об одном из нескольких ответов.
- Открыть диалог, запустив
start()
.
- При нажатии кнопки «ОК» открывается следующее диалоговое окно с включением следующего задания.
- Таким образом, каждая работа может быть полностью выполнена.
- Когда все задания завершены, запускается
done()
и диалоговое окно закрывается.
Пример сценария:
Когда вы используете этот скрипт, пожалуйста, скопируйте и вставьте «Code.gs» и «index.html» в «script» и «HTML» в вашем редакторе скриптов соответственно. И, пожалуйста, запустите start()
. В этом примере сценария предполагается, что вы используете связанный с контейнером сценарий электронной таблицы.
Code.gs: Google Apps Script
// When all jobs were finished, this function is called.
function done(e) {
Logger.log(e)
}
// Open a dialog
function openDialog(jobs, i) {
var template = HtmlService.createTemplateFromFile('index');
template.jobs = JSON.stringify(jobs);
template.index = i;
SpreadsheetApp.getUi().showModalDialog(template.evaluate(), "sample");
}
// Please run this script
function start() {
var jobs = ["sample1", "sample2", "sample3"];
openDialog(jobs, 0);
}
index.html: HTML и Javascript
<div id="currentjob"></div>
<input type="button" value="ok" onclick="sample()">
<script>
var jobs = JSON.parse(<?= jobs ?>);
var index = Number(<?= index ?>);
document.getElementById("currentjob").innerHTML= "currentJob: " + jobs[index] + ", index: " + index;
function sample() {
if (index < jobs.length - 1) {
google.script.run.openDialog(jobs, index + 1); // Modified
} else {
google.script.run.withSuccessHandler(()=>google.script.host.close()).done("Done.");
}
}
</script>
Ссылки:
Примечание:
- Это простой пример сценария. Поэтому, пожалуйста, измените это для вашей ситуации.
Если я неправильно понял ваш вопрос, и это был не тот результат, которого вы хотите, я прошу прощения.