#html #google-apps-script #web-applications
Вопрос:
Я пытаюсь получить непрерывный вывод из сценария Google, чтобы пользователь мог видеть ход выполнения сценария. Мне не нужен графический вывод, простого счетчика должно быть достаточно. Я пытаюсь с
function provando() {
var i = 0;
do {
i ;
var riga = "Valore di i: " i;
var finestra = HtmlService
.createHtmlOutput(riga)
.setTitle("Progresso")
.setWidth(300)
.setHeight(75);
SpreadsheetApp.getActiveSpreadsheet().show(finestra);
// Utilities.sleep (500)
} while (i < 20);
}
и проблема в том, что переменная «рига» выводится только в конце цикла.
Есть ли способ получить непрерывный выход?
Комментарии:
1. Проблема с тем, что вы пытаетесь сделать, заключается в том, что вы заставите пользователя ждать еще дольше, просто чтобы отобразить глупый счетчик, который на самом деле не говорит им, что Джек. И вы не можете использовать обратный отсчет, потому что вы никогда не знаете, сколько времени что-то займет, потому что это зависит от множества факторов. Поэтому я бы рекомендовал не тратить на это ваше время. Это плохая идея. Я часто помещаю желтый фон в диалоговые окна, и когда функция завершается, она возвращает фон в нормальное состояние, просто чтобы позволить пользователю теперь, когда поездка туда и обратно от клиента к серверу и обратно завершена.
2. Привет, Рубен, я понимаю, что ты говоришь, но дело в том, что при работе с классом пользователю приходится ждать очень долго (для создания 100 классов требуется 20-30 минут), поэтому счетчик должен быть полезен.
3. Если бы я хотел, чтобы пользователь знал, что он все еще работает, я бы, вероятно, использовал
toast()
его, но я бы не хотел тратить много времени на отображение содержимого. Двадцать или тридцать минут-это довольно много времени, вы ознакомились с лучшими практиками4. Привет, МетаМан, это занимает так много времени, потому что класс работает очень медленно; для создания одного класса вручную из веб-интерфейса требуется от 30 до 45 секунд.
Ответ №1:
Почему бы не сделать это:
let n = 0;
//begin creating classrooms and increment n after every creation
SpreadsheetApp.getActive().toast(`Classrooms: ${n}`);
Это не так много дополнительного кода, и он позволяет всем знать, что он все еще работает, и теперь, когда вы закончите, вы узнаете, сколько классов вы создали.
let n = number of classrooms your going to create and then decrement.
Комментарии:
1. Я собираюсь попробовать, спасибо.
2. Да, ваше решение соответствует моим потребностям. Большое спасибо.