在开发Google Apps脚本时,我使用了库,因为有很多共享代码。如果我有一个库A
:
function foo() { ... }
然后,如果我在另一个脚本B
中使用该库,则foo
函数通过库资源公开,并被调用如下:
function bar() {
A.foo();
...
}
但是,谷歌AddOn文档说从不使用库。所以我通过组合所有库文件来准备AddOn,这些文件将所有内容放在同一个上下文中,现在来自bar
的同一个调用应该是foo()
而不是A.foo()
。
我一直在尝试一些技巧或方法来完成这一切,这样我就可以在不经过所有库函数调用的情况下组合文件(例如,找到'A.
'替换' ')或将所有函数传递给对象(例如,A = { foo: function() {...} }
)。我希望能够只复制并粘贴所有库位,但我无法想象(或找到)这样做的方法。
答案 0 :(得分: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!";
}
}

使用原型稍微复杂一点......
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();
}

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