在补充工具栏中显示表单

时间:2014-10-12 16:21:02

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

我不确定我想做的事情是否可行。

我正在尝试将google表单放入google doc的侧边栏。

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

打开表单

但是我不知道如何从表单元素中获取html对象或blob,我可以使用它来将表单嵌入侧边栏。

我也不能使用iframe,因为不允许使用iframe。

1 个答案:

答案 0 :(得分:2)

虽然您可以在电子表格/文档的侧边栏中显示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();
};