首页 > 解决方案 > 如何在 AppScript 中从 html 获取数据到服务器端代码

问题描述

我已经搜索了几个小时,但找不到解决方案。我有一些 appscript 代码可以创建一个菜单并在谷歌文档中打开一个模式:

function showDialog() {
  let ui = DocumentApp.getUi();
  let html = HtmlService.createHtmlOutputFromFile("dialog");
  ui.showModalDialog(html, "dtest");
}

function processForm() {
  console.log("test123123123");
}

这有效,模式打开。

在模态中,我想提交一个表格。现在我只是在将 console.logs 提交到云记录器时调用一个测试函数。

    <script>
  // Prevent form from submitting
  function preventFormSubmit() {
    var forms = document.querySelectorAll("form");
    for (var i = 0; i < forms.length; i++) {
      forms[i].addEventListener("submit", function (event) {
        event.preventDefault();
      });
    }
  }
  window.addEventListener("load", preventFormSubmit);
  google.script.run.processForm();


</script>

这里的问题是函数 processForm() 没有被触发。

但是当我使用 doGet() 并将其部署为 webapp 时,它可以工作。

我怎样才能让它在谷歌文档中也能工作?我已经尝试遵循文档..但我无法让它工作。

提前感谢您对此的任何帮助。

标签: google-apps-scriptgoogle-docs-api

解决方案


所以我发现了问题。我是用正确的帐户 A 登录到谷歌的。并提示输入,一切正常。在 chrome 中,我使用帐户 B 登录。似乎当您使用 htmlservice 时,它​​使用沙箱,并且它使用您登录 chrome 的用户,而不是您登录工作区的用户。所以访问被拒绝。在两个地方使用相同的用户来解决这个问题。


推荐阅读