Google apps script 在侧边栏中显示窗体

Google apps script 在侧边栏中显示窗体,google-apps-script,google-docs,google-forms,Google Apps Script,Google Docs,Google Forms,我不确定我正在尝试做的事情是否可能 我正试图把一个谷歌表单放到谷歌文档的边栏中 现在我有一个apps脚本文档插件,可以很好地打开边栏,我可以使用var form=FormApp.openById('form_id')打开表单 但是我不知道如何从表单元素中获取html对象或blob,我可以使用它将表单嵌入到侧边栏中 我也不能使用iFrame,因为它们是不允许使用的。虽然您可以在电子表格/文档的侧栏中显示google表单(请参见下面的示例代码),但有一个重要的问题:表单不起作用,即您无法提交表单。不

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

我正试图把一个谷歌表单放到谷歌文档的边栏中

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

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


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

虽然您可以在电子表格/文档的侧栏中显示google表单(请参见下面的示例代码),但有一个重要的问题:表单不起作用,即您无法提交表单。不确定确切原因,但我猜这是由于沙箱限制和/或caja消毒

我建议您使用HTML和(或)编写自己的表单,并在侧边栏中显示。如果您需要表单将响应保存到电子表格中,您也可以非常轻松地完成此操作。和。如果需要这样做,服务器端脚本可以打开电子表格并向其中写入表单值

在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();
};
回答得好;-)但由于我一直很好奇,我一直在深入挖掘,发现表单实际上是在模拟模式下工作的(而不是默认的本机模式)。使用此模式时的主要问题当然是执行速度,但它也会跳过每个样式数据,表单变得非常丑陋!!因此,我同意你在UiApp或HTMLService中构建自己表单的建议,这显然是最好的建议+1无论如何。其他信息:表单(在模拟模式下)必须是匿名的,登录不可用,授权不与电子表格共享。。。另一个问题:-)