在Google Apps脚本Web应用程序中使用客户端 - 服务器通信时遇到一些问题。
我的code.gs包含:
function loadPetName() {
Logger.log('Client ask a Pet Name');
// use Google apps UserProperties as default storage
var storage = PropertiesService.getUserProperties();
return JSON.parse(storage.getProperty('name');
}
Pet.html是:
<script>
// CLASS Pet
function Pet() {
// CONSTRUCTOR
console.log('Creating new Pet');
var petName;
// Get pet name from outer storage
console.log('Loading pet name from storage...');
google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();
var onSuccessLoad = function(name) {
console.log('run onSuccessLoad');
this.petName = name;
alert('Pet Name is ' + name)
};
// METHODS ...
}
</script>
init.html是:
<script>
function init() {
console.log('Initialization');
var cat = new Pet();
}
</script>
index.html包含:
<body onload=init()>
...
在浏览器中打开index.html后,我在控制台中看到:
Initialization
Creating new Pet
Loading Pet Name from storage...
但是没有“run onSuccessLoad”。
在Google Script控制台中,我们可以看到:“客户询问宠物名称”。一切正常,但onSuccessLoad函数没有运行。
如果在Pet.html中我们替换
google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();
到
google.script.run.withSuccessHandler(console.log('SuccessHandler fired')).loadPetName();
我们将在控制台中看到:“SuccessHandler被解雇了。”
我的问题在哪里?
谢谢!
答案 0 :(得分:0)
我发现了一个错误......天啊!
此代码不起作用:
google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();
var onSuccessLoad = function(name) {
console.log('run onSuccessLoad');
this.petName = name;
};
但是这段代码很好用:
var onSuccessLoad = function(name) {
console.log('run onSuccessLoad');
this.petName = name;
};
google.script.run.withSuccessHandler(onSuccessLoad).loadPetName();
但为什么?! (抱歉这个愚蠢的问题)。