Google Apps脚本:一个脚本可以在另一个脚本中触发功能吗?

时间:2014-12-13 18:08:57

标签: google-apps-script

我需要找到一种方法让一个Google Apps脚本文件在另一个脚本文件中触发一个功能。

我的目标是拥有一个主脚本来复制另一个脚本文件并创建一个新文件(已经完成),然后在新文件中触发一个函数。这可能吗?

编辑 - 更多信息:

我正在创建一系列完全自动化的作业应用程序脚本,我需要的是一个创建每个其他脚本的主脚本。目前,每个作业应用程序都有如下文件结构:

- 文件夹 - 第1步(恢复上传的脚本文件) - 步骤2(带有附加脚本文件的电子表格,用于存储步骤1数据) - 第3步(面试时间表附带脚本文件 - 第4步(附带脚本文件的技能测试电子表格) - 第5步(技能测试文件上传的脚本文件)

我需要什么: - 我的主脚本需要能够为不相关的脚本文件1-5创建触发器,我也希望能够为这些文件动态创建和附加新函数。我不能将所有代码都放在一个文件中,因为每个作业应用程序都需要一个具有不同问题和不同职位描述的独特表单。

2 个答案:

答案 0 :(得分:2)

我假设您的意思是完全不同的项目文件中的脚本文件,甚至是不同的Google云端硬盘?只需调用函数名即可触发另一个脚本文件中的脚本 ,它位于同一个项目中 。 Apps脚本不需要在另一个脚本文件中包含一个脚本文件。所有GS脚本文件都可用于其他所有GS脚本文件。

可以将Apps脚本作为独立的内容服务应用程序并获得返回值。必须使用HTTPS GET或POST请求调用Apps脚本。例如,您可以通过客户端的AJAX调用或服务器端代码来执行此操作。

创建新的Apps脚本时,需要发布它。有一个ScriptApp类和Service类。

Service Class - Access and manipulate script publishing

引用ENABLE方法:

  

允许将脚本作为具有指定的Web应用程序进行访问   权限。这种方法相当于打开“发布>   部署为Web应用程序“对话框并单击”部署“。您可以共享   使用Restriction.MYSELF自己分享到域   Restriction.DOMAIN,或与Restriction.ALL分享给每个人。

示例代码:

var service = ScriptApp.getService();
service.enable(service.Restriction.ALL);

因此,您可以通过编程方式发布Apps脚本。

urlFetchApp.fetch方法可以发出GET,PUT,POST或DELETE请求。

Google Documentation - urlFetchApp

原始HTTPS调用只能触发doGet()doPost()功能。但是这些函数可以调用特定函数然后发送返回。

Stackoverflow answer - return from a specific function

还可以创建一个“库”,它可以在多个脚本中重复使用。

Google Documentation - Libraries

您可以在打开工作表或文档时自动运行脚本。因此,如果新的Apps脚本位于工作表中,并且工作表具有onOpen()功能,则该功能可能会被触发。但是,你需要一种方法来打开工作表或文档。

在浏览器中调用独立应用脚本URL时自动运行的doGet()功能可以使用URL搜索字符串参数。因此,您可以在调用Apps脚本的URL中放置搜索字符串参数,然后Apps脚本可以根据搜索字符串值执行某些操作。就像你想在应用程序首次运行时打开除主页之外的东西,这取决于用户选择的某些条件。

答案 1 :(得分:0)

你可以做到,但不安全。

您可以通过在网络上公开来触发功能。您可以使用参数告诉它要运行哪个函数。

https://developers.google.com/apps-script/guides/content