У меня есть кнопка (в HTML), которая одновременно вызывает функцию LoginInfoInput(...)
и перенаправляет на страницу (href="..."
), то есть:
<a onclick="LoginInfoInput('<?!= userID; ?>')" href="<?= ScriptApp.getService().getUrl(); ?>?v=form&userID=<?!= userID; ?>" class="waves-effect waves-light btn-large">Log In</a>
,
, где LoginInfoInput(...)
- это функция javascript, которая запускает мою функцию скрипта Google Apps (GS). После этого активированная функция GS вставит данные в мою таблицу. Между тем, перенаправленный URL пройдет через мою функцию doGet()
. Чтобы определить результат, он получает данные из моей таблицы. Моя проблема в том, что электронная таблица не всегда обновляется вовремя, прежде чем перенаправление страницы предпринимает какие-либо действия.
Моя попытка решить эту проблему состояла в том, чтобы подождать / сделать паузу с помощью while-l oop. Однако, когда while-l oop активен, во время которого данные становятся доступными в электронной таблице (по крайней мере, визуально), не работает, т. Е. Интересные данные не доступны. Обратите внимание, я также во время while-l oop добавил возможность обновлять переменную, в которой хранятся данные электронной таблицы (вызывая SpreadsheetApp.openByUrl (url)), однако, без каких-либо улучшений.
Обновление
Мой LoginInfoInput()
(в JavaScript) выглядит следующим образом:
function LoginInfoInput(userID){
var userLO = document.getElementById("id_loginLO").value;
var userPassword = document.getElementById("id_password").value;
google.script.run.LoginAdd(userLO, userPassword, userID);
}
Решение
Мое решение состояло из комбинации ответа, предоставленного @IMTheNachoMan , см. Ниже , и моего открытия о том, что добавление данных в GS в электронную таблицу может быть отложено, если не принудительно обновлять данные. Для принудительного обновления выполните один вызов SpreadsheetApp.flush();
link после вставки данных в электронную таблицу в функции GS. Насколько я понимаю, данные должны быть в моей электронной таблице, прежде чем я изменю свою страницу на основе (GS), поскольку она будет пытаться получить доступ к электронной таблице во время вызова моей страницы на основе (GS), а не когда я буду вызывать свою электронную таблицу когда данные доступны (при ожидании / использовании while-l oop).