如何简化从Apps脚本库到AddOn的过渡?

时间:2018-02-23 04:23:12

标签: google-apps-script

在开发Google Apps脚本时,我使用了库,因为有很多共享代码。如果我有一个库A function foo() { ... }

然后,如果我在另一个脚本B中使用该库,则foo函数通过库资源公开,并被调用如下: function bar() { A.foo(); ... }

但是,谷歌AddOn文档说从不使用库。所以我通过组合所有库文件来准备AddOn,这些文件将所有内容放在同一个上下文中,现在来自bar的同一个调用应该是foo()而不是A.foo()

我一直在尝试一些技巧或方法来完成这一切,这样我就可以在不经过所有库函数调用的情况下组合文件(例如,找到'A.'替换' ')或将所有函数传递给对象(例如,A = { foo: function() {...} })。我希望能够只复制并粘贴所有库位,但我无法想象(或找到)这样做的方法。

1 个答案:

答案 0 :(得分:1)

这个小例子有帮助吗?可能有更好/更简单的方法,但它适用于最小的原始库编辑。暴露图书馆功能的另一种常见方法似乎不适用于应用程序脚本。

选项1:



var a = new A();

function main() {
  Logger.log(a.foo());
}

function A() {
  var self = this;

  self.foo = function() {
    return "Hello, world!";
  }

  function bar() {
    return "I'm private!";
  }
}




选项2:

使用原型稍微复杂一点......



function main() {
  var a = new A();
  Logger.log(a.foo());
}

var A = function() {
  var self = this;

  self.bar = function() {
    return "World!";
  }
}

A.prototype.foo = function() { //Prototype public stuff
  return "Hello, " + this.bar();
}




无论哪种方式,他们都必须修改一下。有没有人知道更好的方法?