在几个*.gs文件中组织电子表格代码 - 甚至可能吗?

leo*_*one 10 google-apps-script

我试图在几个脚本文件中组织我的电子表格代码.在脚本编辑器中,我可以根据需要创建尽可能多的*.gs文件,但我无法弄清楚如何访问将在另一个脚本中定义的代码.

我想要实现的简单示例:

Code.gs:

function onEdit(){
   myFunctionFromLibrary_gs();
} 
Run Code Online (Sandbox Code Playgroud)

Library.gs:

function myFunctionFromLibrary_gs(){
   Browser.msgBox("hi there");
}
Run Code Online (Sandbox Code Playgroud)

onEdit()显然是由Trigger调用的.如果不进行修改,将导致运行时错误,说明这一点

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

那么我怎样才能做到这一点,或者目前不支持?

请事先提供帮助.

gih*_*uka 14

是的,这是可能的.

  1. 您不仅限于单个服务器Code.gs文件.您可以跨多个文件传播服务器代码,以便于开发.所有服务器文件都加载到同一个全局命名空间中,因此在您希望提供安全封装时使用JavaScript类.

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


meg*_*024 8

我不知道_gs后缀对谷歌来说意味着什么,但如果没有它(参见下面的代码),代码就可以了.

file1.gs:

function onEdit(){
   myFunctionFromLibrary();
}
Run Code Online (Sandbox Code Playgroud)

file2.gs

function myFunctionFromLibrary(){
   Browser.msgBox("hi there");
}
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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