使用 HtmlService 在 Google Apps 脚本中执行表单 POST?

Peo*_*eat 4 google-apps-script

我正在尝试使用 Google Apps Script 做一个向导类型的应用程序。由于使用 UiApp 进行造型在后面非常痛苦,我正在尝试使用 HtmlService 路线。我无法让表单 POST 工作。这是我的示例代码:

// Code.gs
function doGet(e) {
  return HtmlService.createHtmlOutputFromFile('p1');
}

function doPost(e) {
  var params = Utilities.jsonStringify(e);
  var page = HtmlService.createTemplateFromFile('p2');
  page.params = params;
  return page.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE);
}
Run Code Online (Sandbox Code Playgroud)

p1.html

<div>
  <form action="#" method="post">
    <input type="text" id="myContents"></input>
    <input type="submit" value="Submit"></input>
  </form>
</div>
Run Code Online (Sandbox Code Playgroud)

p2.html

<div>
  <?=params?>
</div>
Run Code Online (Sandbox Code Playgroud)

我从 p1 上点击“提交”得到的输出是

{"queryString":null,"parameter":{},"contextPath":"","parameters":{},"contentLength":0}

我期待表单将数据返回给我,以便我可以在后续页面中使用数据。我想知道这是否与卡哈中毒有关。有任何想法吗?

Aru*_*jan 5

由于Google Caja施加的安全限制,发布本身在 HtmlService 中不起作用

在 HtmlService 中执行“表单发布”的正确方法是使用google.script.run语法通过客户端上下文调用服务器端函数。有关详细示例,请参见此处 - https://developers.google.com/apps-script/guides/html-service-communication#forms

  • 好的,我找到了一个计划 B。我仍然可以替换 &lt;a&gt; 元素中的 href,因此我可以使用 CSS 技巧将 &lt;a&gt; 样式化为看起来像一个按钮......无论如何,谢谢你的回答。 (2认同)