【问题标题】:Want to post from a Apps Script form to another App Script想要从一个 App 脚本表单发布到另一个 App 脚本
【发布时间】: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&lt;a href="http://www.google.com" target="_blank"&gt;Google&lt;/a&gt; 的链接或使用 JavaScript 客户端代码中的 window.location DOM 方法之一。跨度>
  • 我的问题不在于用户获取()的内容,而在于他们发布的内容()。我想向 webapp 发送数据,而不是从中接收数据。
  • 我是否应该改为在 webapp 端使用 html 表单并将其提取到插件侧边栏中。这不是更不安全吗?
  • 这两种方式的安全性没有区别。如果您希望来自一个用户界面的信息立即(或非常快速)由另一个用户界面显示,那么您想要显示数据的任何 UI 都需要不断地“轮询”数据源。如果您只想将数据从一个地方保存到另一个地方,并且您正在使用电子表格进行数据存储,您可以通过按 ID 打开电子表格将数据保存到您想要的任何电子表格中。 Google Documentation - Open by ID

标签: html post google-apps-script sidebar add-on


【解决方案1】:

它在 webapp 上没有安全性(任何人都可以访问,甚至是匿名访问)。否则它将强制使用 Google 登录。

sidebar.html(来自 client-script.gs)

<form id="myForm" target="_self" method="post" action="https://script.google.com/macros/s/SCRIPT_ID/exec">
  <input name="name" type="text" value=""/>   
  <input name="message" type="text" value=""/>
  <input type="submit" value="send" />
</form>

【讨论】:

  • 这个解决方案对于 webapp 的仅域访问会更好,但这个问题超出了我的范围。
猜你喜欢
  • 2020-10-12
  • 1970-01-01
  • 2021-09-12
  • 1970-01-01
  • 2019-10-19
  • 1970-01-01
  • 1970-01-01
  • 2011-06-01
  • 2022-08-02
相关资源
最近更新 更多