как получить и использовать возвращаемое значение в Google scripts

#javascript #html #dom #google-apps-script

#javascript #HTML #dom #google-apps-script

Вопрос:

Привет, у меня есть функция в Google scripts в funcs.gs то есть возвращает объект. В зависимости от того, что вводит пользователь, объект возвращает и отображает некоторые результаты. Но я хотел бы сделать еще один шаг и использовать эти результаты, чтобы указать, появится ли сообщение об ошибке. У меня нет идей, поэтому я спрашиваю здесь.

 function data(num){

   
 if (condition met){
    
    let Obj = {thing1:value1, thing2: value2}
    return prjObj;
    
    //Obj works perfectly fine 
    
}else{
     
   let Obj = {thing1: value3, thing2: value4};

  return  Obj;
  //this also works fine 
  
}//end of if statement  
}//end of getData function

 

теперь я использую функцию (Jquery используется, но не требуется) в HTML-файле

 $(function redbox(){
let repeater = setTimeout(redbox, 5000);

let redbox1 ={}
redbox1.hidebox = document.getElementById("something").hidden = true;
redbox1.unhidebox = document.getElementById("something").hidden = false;

//i tried this and just tried to put redbox1.unhidebox under the return statement but it does not work 
//google.script.run.Data(redbox1 )

console.log(google.script.run.data());
})
  
 

Я не уверен, почему функция data возвращает undefined, даже когда я использую num в качестве параметра.
Цель состоит в том, чтобы установить для скрытого элемента значение false при вызове оператора else . Я использовал rexbox1 в качестве объекта, потому что это позволило бы мне передать его в качестве параметра в функции данных, но он не отображался, какие-либо идеи были бы большой помощью.

Заранее спасибо

Комментарии:

1. Данные и данные — это разные значения заглавных букв функций.

2. Я. Я не написал это правильно, но они оба одинаковые в реальном коде, я отредактировал его сейчас, хотя

Ответ №1:

Метод google.script.run.myFunction() вернет void , как описано в документации:

этот метод является асинхронным и не возвращает напрямую; однако серверная функция может возвращать значение клиенту в качестве параметра, переданного обработчику успеха

Поэтому, чтобы получить то, что возвращает ваша функция, вы должны использовать ее вместе с методом google.script.run.withSuccessHandler() следующим образом:

 <script>
function redbox(returnedValue) {
  console.log(returnedValue);
}

google.script.run.withSuccessHandler(redbox).data(num);
</script> 

Значение, возвращаемое вашей функцией Apps Script, будет передано вашей желаемой функции в HTML-скрипте Javascript, если в вашей функции Apps Script нет ошибок.

Ответ №2:

Просто попробуйте написать это так:

Избавьтесь от всего остального мусора.

javascript:

 function getData() {
  google.script.run
  .withSuccessHandler(function(obj){
    console.log(obj.foo);
  })
  .data()
}
 

gs:

 function data() {
  return {foo:bar}
}