从.gs文件调用jQuery函数(Google Apps脚本)

时间:2014-07-23 18:18:37

标签: google-apps-script

我正在建立一个由Google网站提供的社区驱动网站(我知道这是一个糟糕的选择,我没有选择)并且大部分功能都是构建到Google Apps脚本中(以便阅读/写入外部数据库并处理数据的显示方式。在各种问题中,我发现了一个让我困惑的问题。

我通常将我的GAS项目构建为Javascript,HTML和CSS(Code.gs,HTML.html和CSS.html)。我利用jQuery做了很多事情(例如,点击处理程序,表单提交等)。但是,似乎我的jQuery和我的Javascript不能存在于同一个“world”中,这里的意思是相同的.gs文件,或者相同的脚本标记,如果它在HTML文件中。实际上,我不能从我的.gs文件中调用任何jQuery函数!有人可以解释为什么这样,拜托?似乎问题是jQuery库没有包含在内,但是我找不到在Javascript中包含任何东西的方法(想想来自C的#include)。由于这是网络编程,这与“普通”编程有很大不同,我认为我理解这部分问题的部分来自于此。在框架(GAS)中工作并没有帮助。

非常感谢,谢谢。

2 个答案:

答案 0 :(得分:4)

HTML服务支持JQuery,因为代码在您的浏览器中执行,因此库也会在您的浏览器中加载(在CAJA清理之后),但.gs文件中的代码在Google的服务器上执行,您无法显然加载谷歌服务器上的任何东西!

总之:除了HTML服务中使用的.html文件之外,没有办法在Google Apps脚本文件中使用JQuery或任何其他外部库。

答案 1 :(得分:3)

在您描述的项目配置中,它与HtmlService最佳实践中的示例相匹配,所有GS代码都在服务器端运行,而常规javascript和jQuery在用户的浏览器中运行客户端。如果您的HTML文件中有GS,那么我希望您使用模板化HTML,这反过来意味着GS在服务器端进行评估,以生成提供给客户端的最终HTML。 (一旦页面被提供,请查看HTML源代码......那里没有GAS。)

所以这些不同的操作环境可以保持您的GAS& jQuery元素直接交互。例如,从客户端,您可以使用google.script.run来调用服务器端函数并将参数传递给它们,您还可以设置回调以从GS代码接收异步“返回”。

鉴于对DOM元素的依赖,我不确定在服务器端的Apps脚本中使用jQuery会有什么用处,但来自@EricKoleda的this blog entry提供了一个将开源JavaScript库移植到Google的示例应用脚本。 (也许你会发现他Underscore Library的副本就是你所需要的!)