#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}
}