我正在使用 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。
有什么想法吗?
最佳答案
经过大量测试,直接从电子表格调用的自定义函数似乎无法返回对象。您的 Ob_wrapper(x)
函数执行此操作,因此结果未正确传递 print_Ob()
函数
您可以通过让第三个函数调用其他两个函数来解决这个问题,如下所示:
function test(x){
var result = print_Ob(Ob_wrapper(x));
Logger.log(result);
return result
}
关于google-apps-script - 面向对象的 Google Apps 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49563530/