我正在使用Google表格中的自定义功能开展相关项目。我最近试图重构一些代码以使所有内容都面向对象,并发现Google表格不喜欢对象。
假设我在.gs文件中有以下内容
function Ob(x){
this.x = x;
this.toString = function() { return this.x;};
}
function print_Ob_wrapper(x){
var ob = new Ob(x);
return ob.toString();
}
function Ob_wrapper(x){
var ob = new Ob(x);
return ob;
}
function print_Ob(ob){
var result = ob.toString();
Logger.log(result);
return result;
}
如果我将=print_Ob_wrapper(5)
放入单元格中,则单元格会按预期显示5。
如果我尝试在电子表格中调用=Ob_wrapper(5)
,我会得到一个空白单元格,这对我来说很有意义,因为工作表可能无法显示对象或其他内容。
对我来说没有意义的是为什么=print_Ob(Ob_wrapper(5))
不显示5。
有什么想法?
答案 0 :(得分:0)
经过大量测试后,似乎直接从电子表格调用的自定义函数无法返回对象。您的Ob_wrapper(x)
函数执行此操作,因此结果未正确传递print_Ob()
函数
你可以通过让第三个函数同时调用其他函数来解决这个问题:
function test(x){
var result = print_Ob(Ob_wrapper(x));
Logger.log(result);
return result
}