GAS синхронизирует серверные сценарии с загрузкой страницы - PullRequest
0 голосов
/ 05 ноября 2019

В своем HTML-коде я вызываю скрипт для редактирования формы Google, затем загружаю эту форму. Моя проблема, веб-страница загружается до того, как скрипт завершит обновление.

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <script>
  google.script.run.changeForm();     
  window.top.location.href='https://docs.google.com/forms/d/e/ABCDpQLSdV2e61UFkG-_LcVBRpWe9F1MizNJ-P5JUCUGRlWiFSoImPkA/viewform';
  </script>
  <body>
  </body>
</html>    

Мое временное исправление - setTimeout (), но это выглядит как грязный трюк.

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <script>
  google.script.run.changeForm();  
  setTimeout(function(){  
  window.top.location.href='https://docs.google.com/forms/d/e/ABCDpQLSdV2e61UFkG-_LcVBRpWe9F1MizNJ-P5JUCUGRlWiFSoImPkA/viewform';
  }, 2000);
  </script>
  <body>
  </body>
</html>

Есть ли лучший способ решить эту проблему?

Ответы [ 2 ]

2 голосов
/ 05 ноября 2019

Вы должны попробовать

google.script.run.withSuccessHandler(success).changeForm();
function success(){
window.top.location.href='https://docs.google.com/forms/d/e/ABCDpQLSdV2e61UFkG-_LcVBRpWe9F1MizNJ-P5JUCUGRlWiFSoImPkA/viewform';
}

withSuccessHandler(success) запустить функцию в параметре после того, как ваша функция changeForm() закончила свое выполнение

0 голосов
/ 05 ноября 2019

Вы должны узнать, есть ли у API приложений Google способ уведомить вас, если форма обновлена. Это может быть доступно в форме обратного вызова. Если это так, поместите код рендеринга в функцию и передайте эту функцию в качестве обратного вызова в API.

...