google-apps-script - 面向对象的 Google Apps 脚本

标签 google-apps-script

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

相关文章:

javascript - 将数组转换为对象并将值粘贴到不同的列中

javascript - 在 Google 脚本中访问电子表格

javascript - 有什么方法可以在 Google 表单上设置默认选择吗?

javascript - JavaScript 数组中的重复值、不同值和唯一值

google-apps-script - 在 Google Apps 脚本中使用完整的 Google Maps V3 API 及其所有功能

javascript - 在 Google Data Studio 社区连接器中对嵌套数据建模

javascript - 有没有办法将 URLFetchApp.fetch 从 gs 端传递到 javascript 端

google-apps-script - 如何为共享云端硬盘发布云端硬盘应用

javascript - 在Google应用程序脚本GUI中显示Gmail消息

google-apps-script - 谷歌应用脚​​本: Move data between spreadsheets