【问题标题】:How to get data from html from back to serverside code in AppScript如何在 App Script 中从 html 获取数据到服务器端代码
【发布时间】:2021-05-02 11:27:47
【问题描述】:

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

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.script.run
  • 您想在什么时候致电processForm()?也许你可以在 `google.script.run.processForm();` 之前实现一个日志 - 看看你的执行是否到了那一步?

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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-07
    • 1970-01-01
    • 2019-12-13
    • 1970-01-01
    • 2018-03-27
    • 1970-01-01
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多