19

我正在尝试在几个脚本文件中组织电子表格的代码。在脚本编辑器中,我可以创建任意数量的 *.gs 文件,但我不知道如何访问将在另一个脚本中定义的代码。

我想要实现的简单示例:

代码.gs:

function onEdit(){
   myFunctionFromLibrary_gs();
} 

图书馆.gs:

function myFunctionFromLibrary_gs(){
   Browser.msgBox("hi there");
}

onEdit() 显然是由触发器调用的。如果不进行修改,这将导致运行时错误,说明

myFunctionFromLibrary_gs TypeError: 不是函数,它是未定义的。

那么我怎样才能使这项工作,或者目前不支持呢?

提前感谢您的帮助。

4

3 回答 3

23

是的,这是可能的。

  1. 您不限于单个服务器 Code.gs 文件。您可以将服务器代码分布在多个文件中,以便于开发。所有服务器文件都加载到同一个全局命名空间中,所以当你想提供安全封装时,请使用 JavaScript 类。

参考:Google 文档 - 功能和限制

于 2016-10-05T18:37:26.690 回答
14

我不知道_gs后缀对 Google 意味着什么,但没有它(见下面的代码),代码就可以工作。

文件 1.gs:

function onEdit(){
   myFunctionFromLibrary();
}

文件2.gs

function myFunctionFromLibrary(){
   Browser.msgBox("hi there");
}
于 2012-07-30T16:46:11.577 回答
6

我知道这是一个老问题,但我发现它正在寻找类似的任务,并且在我的同一次搜索中碰巧找到了答案。来自https://developers.google.com/apps-script/guide_libraries#writingLibrary的文档:

如果您希望脚本的一个或多个方法对您的库用户不可见(也不可用),您可以使用下划线结束该方法的名称。例如,myPrivateMethod_()。

虽然您的函数不以下划线结尾,但它可能在其他地方具有特殊含义,或者 _gs 后缀也可能具有特殊含义(特别是给定相同的文件名后缀)。

于 2015-05-19T20:09:05.223 回答