最佳做法:通过doPost(e)或google.script.run.someFunction(data)接收数据更好吗?

时间:2019-02-15 13:19:07

标签: post google-apps-script

我正在制作一个可以将表单从网页传递到Google电子表格的应用程序。我发现了两种基本方法:

1)我在网页上提交表单,然后通过doPost(e) -> JSON.stringify(e)处理事件。 (这在“ code.gs”中。)

2)我创建了一个函数,即“ writeToCellA1()”,并按google.script.run.writeToCellA1(someData)进行调用。 (这是在“ index.html”中)

问题是:将数据写入Google Spradsheet的这两种可能的方法是否存在某种背景,表明其中一种是优越的?更安全,更可靠,更有希望的未来功能开发等。

1 个答案:

答案 0 :(得分:3)

如果使用doPost,则必须通过检查有效负载来确定要调用的实际功能,因为来自客户端的所有输入都将进入该单个入口点。所有功能参数都必须基于对象(即命名)。除非使用异步方法进行连接,否则将阻止客户端代码。此外,您收到的任何回复都是ContentServiceHtmlService

如果使用google.script.run模式,则可以将调用定向到特定的服务器功能,可以以传统方式(即基于位置和基于对象的方式)轻松指定函数参数,从而确保您的调用是异步,您可以直接返回大多数可序列化的数据类型。

另外还有一个访问参数-根据发布的Web应用程序的设置,doPost可用于任何经过充分授权的客户端,甚至是匿名客户端。这可能是您或其他人编写的外部代码,例如一个PHP脚本。通过google.script.run进行的调用仅在HtmlService服务的页面上可用(您可以使用Apps Script API定位外部代码中的各个功能)。请注意,您无需发布为网络应用程序即可使用google.script.run-也就是说,您也可以在边栏和模式对话框中使用它们。

还有错误/响应处理的方式。如果您要为对doPost的这些调用添加成功和失败回调,则与对google.script.run的调用进行相同的工作比做更多的工作-后者支持轻松地将这些添加到withSuccessHandlerwithFailureHandler这两种方法。

无论如何,您应该查看以下主题的官方文档: