我正在制作一个可以将表单从网页传递到Google电子表格的应用程序。我发现了两种基本方法:
1)我在网页上提交表单,然后通过doPost(e) -> JSON.stringify(e)
处理事件。 (这在“ code.gs”中。)
或
2)我创建了一个函数,即“ writeToCellA1()”,并按google.script.run.writeToCellA1(someData)
进行调用。 (这是在“ index.html”中)
问题是:将数据写入Google Spradsheet的这两种可能的方法是否存在某种背景,表明其中一种是优越的?更安全,更可靠,更有希望的未来功能开发等。
答案 0 :(得分:3)
如果使用doPost
,则必须通过检查有效负载来确定要调用的实际功能,因为来自客户端的所有输入都将进入该单个入口点。所有功能参数都必须基于对象(即命名)。除非使用异步方法进行连接,否则将阻止客户端代码。此外,您收到的任何回复都是ContentService
或HtmlService
。
如果使用google.script.run
模式,则可以将调用定向到特定的服务器功能,可以以传统方式(即基于位置和基于对象的方式)轻松指定函数参数,从而确保您的调用是异步,您可以直接返回大多数可序列化的数据类型。
另外还有一个访问参数-根据发布的Web应用程序的设置,doPost
可用于任何经过充分授权的客户端,甚至是匿名客户端。这可能是您或其他人编写的外部代码,例如一个PHP脚本。通过google.script.run
进行的调用仅在HtmlService
服务的页面上可用(您可以使用Apps Script API定位外部代码中的各个功能)。请注意,您无需发布为网络应用程序即可使用google.script.run
-也就是说,您也可以在边栏和模式对话框中使用它们。
还有错误/响应处理的方式。如果您要为对doPost
的这些调用添加成功和失败回调,则与对google.script.run
的调用进行相同的工作比做更多的工作-后者支持轻松地将这些添加到withSuccessHandler
和withFailureHandler
这两种方法。
无论如何,您应该查看以下主题的官方文档: