【发布时间】:2016-05-23 13:25:14
【问题描述】:
我有一个共享给所有域用户的插件。 它会打开一个包含表单的侧边栏。
我希望表单以基本的客户端-服务器方式发布到另一个 Apps 脚本(实现的 webapp)。 另一个脚本(以管理员身份运行)应该处理用户提交的数据。
Script1.html(在插件中,任何用户都可以运行)
<form id="myForm" method="post" action="https://script.google.com/a/macros/<domain>/s/<script2-id>/exec">
<input name="name" type="text" value=""/>
<input name="message" type="text" value=""/>
<input type="button" value="send" formmethod="post" onclick="google.script.host.close();" />
</form>
Script2(始终由同一管理员运行)
function doPost(formInfo){
doStuff(formInfo.name,formInfo.message)
}
这可能吗?我究竟做错了什么。这可以以安全的方式完成吗?
【问题讨论】:
-
您希望 Web App 在当前浏览器选项卡中打开吗?在另一个浏览器选项卡中打开? Web App 是否已经打开? Web App 是否可以在完全不同的计算机上获取更新信息?
-
在IFRAME沙盒模式下使用
method="post",在表单中带有提交按钮,会导致页面消失。如果您希望 Web 应用程序在新的浏览器选项卡中打开,您需要使用带有target=_blank、<a href="http://www.google.com" target="_blank">Google</a>的链接或使用 JavaScript 客户端代码中的window.locationDOM 方法之一。跨度> -
我的问题不在于用户获取()的内容,而在于他们发布的内容()。我想向 webapp 发送数据,而不是从中接收数据。
-
我是否应该改为在 webapp 端使用 html 表单并将其提取到插件侧边栏中。这不是更不安全吗?
-
这两种方式的安全性没有区别。如果您希望来自一个用户界面的信息立即(或非常快速)由另一个用户界面显示,那么您想要显示数据的任何 UI 都需要不断地“轮询”数据源。如果您只想将数据从一个地方保存到另一个地方,并且您正在使用电子表格进行数据存储,您可以通过按 ID 打开电子表格将数据保存到您想要的任何电子表格中。 Google Documentation - Open by ID
标签: html post google-apps-script sidebar add-on