google.script.run .withSuccessHandler () не передает возвращаемое значение функции, если скрипт импортирован как библиотека - PullRequest
0 голосов
/ 29 июня 2019

Эта же функция отлично работает, если код не импортирован, а только в листе.

.withSuccessHandler () не передает возвращаемое значение вызываемой функции.

Код в code.gs возвращает логическое значение (журнал получает его), функция, вызываемая с помощью .withSuccessHandler (), не получает его, а переменная undefined .

HTML

<html>
  <form id="myForm">
  [...]
  <input type="button" value="Submit" 
 onClick="google.script.run.withSuccessHandler(DataSaved).withFailureHandler(Error).processForm(this.form)"
        />
</form>
<div id="Message"></div>
 <script>
    function DataSaved(ret){
    if(ret==true){
    document.getElementById('Message').innerHTML = "Finished!";
    }else{
    document.getElementById('Message').innerHTML = ret+"Wrong Sheet!";
    }
};
    function Error(err){
    document.getElementById('Message').innerHTML = "An error occurred: "+err;
};
 </script>

code.gs

function processForm(myForm) {
  var data = myForm.data
  var fu = ParseExport(data)
  console.log(typeof fu);console.log(JSON.stringify(fu))
  return fu
}

Полученная строка: undefinedWrong Sheet!

Stackdriver

Stackdriver-Protokolle
29.06.2019, 19:39:11
FEHLERBEHEBUNG
boolean
29.06.2019, 19:39:11
FEHLERBEHEBUNG
true

Я не знаю, где искать ошибку больше. Даже переместил функцию google.script.run в блок скрипта, чтобы проверить, если она что-то меняет (не делает). Обработчик ошибок работает нормально ...

1 Ответ

0 голосов
/ 05 июля 2019

Это была моя ошибка, так как импортирующий лист имеет класс-обертку для обработки вызова импортированных функций скрипта, который тоже должен передавать возврат.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...