【问题标题】:Display Form in Sidebar在侧边栏中显示表单
【发布时间】:2014-10-12 16:21:02
【问题描述】:

我不确定我正在尝试做的事情是否可行。

我正在尝试将谷歌表单放入谷歌文档的侧边栏中。

现在我有一个可以很好地打开侧边栏的应用程序脚本文档插件,并且我可以使用 var form = FormApp.openById('form_id'); 打开表单

但我不知道如何从表单元素中获取 html 对象或 blob,以便将表单嵌入边栏中。

我也不能使用 iframe,因为它们是不允许的。

【问题讨论】:

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


    【解决方案1】:

    虽然您可以在电子表格/文档的侧边栏中显示 google 表单(请参见下面的示例代码),但存在一个重要问题:该表单不起作用,即您无法提交表单。不知道具体原因,但我猜这是由于沙盒限制和/或 caja 清理。

    我建议您使用 HTML 和 HTML Service(或 UI Service)编写自己的表单,并在边栏中显示。如果您需要将回复保存到电子表格中,您也可以很容易地做到这一点。 See this for more on info and code samples of using forms in HTML Servicethis for using forms in UI Service。如果您需要这样做,您的服务器端脚本可以打开电子表格并向其中写入表单值。

    在 Google 表格的侧边栏中显示 Google 表单的插件示例代码:

    注意:表单实际上不起作用 - 当它显示在侧边栏中时不会提交!

    function showFormInSidebar() {
      var form = FormApp.openById('YOUR-FORM-ID-HERE');
      var formContent = UrlFetchApp.fetch(form.getPublishedUrl()).getContentText();
      var ui = HtmlService.createHtmlOutput(formContent).setTitle("Google Form in Sidebar Example");
      SpreadsheetApp.getUi().showSidebar(ui);
    };
    
    function onOpen(e) {
      // Add this add-on to Add-ons menu
      SpreadsheetApp.getUi().createAddonMenu()
          .addItem('Show form', 'showFormInSidebar')
          .addToUi();
    };
    

    【讨论】:

    • 不错的答案 ;-) 但是因为我总是很好奇,所以我一直在深入挖掘,发现表单实际上是在仿真模式下工作(而不是默认的 NATIVE)。使用此模式时的主要问题当然是执行速度,但它也会跳过每个样式数据并且表单变得非常难看!所以我同意你在 UiApp 或 HTMLService 中构建自己的表单的建议显然是最好的。无论如何 +1。
    • 附加信息:表单(在模拟模式下)必须是匿名的,登录不可用并且授权不与电子表格中的一个共享......另一个陷阱:-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-10-13
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2020-05-27
    • 1970-01-01
    • 2023-01-10
    相关资源
    最近更新 更多