【问题标题】:Object Oriented Google Apps Scripts面向对象的 Google Apps 脚本
【发布时间】:2018-03-30 05:56:14
【问题描述】:

我正在使用 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。

有什么想法吗?

【问题讨论】:

    标签: google-apps-script


    【解决方案1】:

    经过大量测试,直接从电子表格调用的自定义函数似乎无法返回对象。您的 Ob_wrapper(x) 函数会这样做,因此结果未正确传递 print_Ob() 函数

    您可以通过让第三个函数调用其他两个函数来解决此问题,如下所示:

    function test(x){
    var result = print_Ob(Ob_wrapper(x));
    Logger.log(result);
    return result
    }
    

    【讨论】:

    • 这是否记录在任何地方?我很生气,我只是在大量重写一堆东西之后才发现这个,如果它不能返回对象,那一切都是无用的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-26
    • 1970-01-01
    • 2016-06-18
    相关资源
    最近更新 更多