【问题标题】:Create a Google Form in Pop up of Google Spreadsheet. Could this be done?在弹出的 Google 电子表格中创建一个 Google 表单。这可以做到吗?
【发布时间】:2017-07-23 06:09:57
【问题描述】:

参考:

Single Google Form for multiple Sheets



重新申领:

  1. 我有点难以让我的写作变得更好或更好 理解(英语较少)。
  2. 我对 Google Apps 脚本 (GAS) 有一点了解。
  3. 我已将下面的“MyURLDoc”和“MyIdDoc”更改为 cosinderring 我的。




问题:

如何让 Google 表单出现在我在 Google 电子表格中制​​作的弹出窗口中?





尝试 1:

function goToURL() {
  FormApp.openByUrl(//*** MyURLDoc! ***//);
}





尝试 2: 以下是参考文献!

function goToForm() {
var form = FormApp.openById(//*** MyIdDoc! ***//),
    formUrl = form.getPublishedUrl(),
    response = UrlFetchApp.fetch(formUrl),
    formHtml = response.getContentText(),
    htmlApp = HtmlService
  .createHtmlOutput(formHtml)
  .setSandboxMode(HtmlService.SandboxMode.IFRAME)
  .setTitle('Ta Daaa!')
  .setWidth(500) 
  .setHeight(450);  SpreadsheetApp.getActiveSpreadsheet().show(htmlApp);
}





问题:

它总是这样说:     " 找不到具有给定 ID 的项目或您没有权限 "

【问题讨论】:

  • 可能重复,检查这个stackoverflow.com/questions/17152120/…
  • 当然是这样。 @mTorres!因为在您在评论中附上上述内容之前,我作为(参考)给出的链接确实是一个完全相同的问题,但这不是一个问题。因为就我而言,我发现了新问题,同时我无法在此处回复我的评论。这完全是因为我的声誉仍然很低,所以如果我发现了新问题,我需要在我的新帖子中重新发布到 Re-claim。
  • 抱歉,我的阅读速度太快了,但您在编辑表单或查看表单时获得了 ID?这将是一个小错误,但我们是人类,我们都这样做,而且视图表单没有权限问题,但编辑有。
  • 好吧。我不知道但是我已经用视图更改了我的 ID,但是度假村都一样,没有任何变化,都非常相似,警告总是像那样出现。
  • 我很确定您输入了错误的表单 ID

标签: google-apps-script google-sheets popup popupwindow google-forms


【解决方案1】:

使用 Google 表单创建边栏

我刚刚使用了一个旧表单并获得了嵌入代码。我加载到另一个项目中的侧边栏中,并粘贴了嵌入代码,它是一个 iframe,除了大小之外它加载得很好,我运行了表单,果然它将数据加载到包含它的电子表格中。

我想我会继续添加一个完整的示例。这是一个简单的示例,它创建了一个表单,用于将时间戳文本输入到电子表格中。它是通过两种方式完成的。第一种技术使用标准的 html、javascript、JQuery 和 Google Script。第二种技术是通过创建一个表单并将其嵌入到一个简单的 html 页面中来完成的。两个版本都适合侧边栏,并且都链接到电子表格页面,其中文本已加载并带有时间戳。

代码.gs:

function onOpen()
{
  SpreadsheetApp.getUi().createMenu('My Tools')
    .addItem('createTextEntryForm', 'createTextEntryForm')
    .addToUi();

  loadSideBar();
  SpreadsheetApp.getUi().createMenu('My Menu').addItem('loadSidebar', 'loadSideBar').addToUi();  
}

//This loads the text into the spreadsheet for the html version of the form.
function dispText(txt)
{
  var ss=SpreadsheetApp.getActiveSpreadsheet();
  var sht=ss.getSheetByName('Notes');
  var ts=Utilities.formatDate(new Date(), 'GMT-6', "M/dd/yyyy HH:mm:ss");
  var row=[];
  row.push(ts);
  row.push(txt);
  sht.appendRow(row);
  return true;
}

function loadSideBar()
{
  var userInterface=HtmlService.createHtmlOutputFromFile('formBar');//sidebar for html and formBar for form
  SpreadsheetApp.getUi().showSidebar(userInterface);
}


//This is the form
function createTextEntryForm()
{
   var ss=SpreadsheetApp.getActiveSpreadsheet();
   var form=FormApp.create('Form On A Sidebar');
   form.setDescription('Enter Your Message and Push Submit when complete.')
       .setConfirmationMessage('Message Saved and TimeStamped.')
       .setAllowResponseEdits(true)
       .setAcceptingResponses(false)
       .setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId());
   var containerLink=form.addParagraphTextItem();
   containerLink.setTitle('Enter your comment now.')
       .isRequired();
}

sidebar.html 是表单的 html 版本:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
  <script>
    $(function() {
        $('#txt1').val('');
      });
    function sendText()
    {
      var txt=$('#txt1').val();
      google.script.run
        .withSuccessHandler(clearText)
        .dispText(txt);
    }
    function clearText()
    {
      $('#txt1').val('');
    }
    console.log("My code");
  </script>
  </head>
  <body>
  <textarea id="txt1" rows="12" cols="35"></textarea>
<br />
  <input id="btn1" type="button" value="submit" onClick="sendText();" />
  </body>
</html>

formBar.html 是嵌入表单的地方:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
    <iframe src="FormURL?embedded=true#start=embed" width="300" height="550" frameborder="0" marginheight="0" marginwidth="0">Loading...</iframe>
  </body>
</html>

这是电子表格和侧边栏的样子:

【讨论】:

  • 是的,我终于从你@Cooper 那里得到了启发。谢谢!是的,好吧..你说得对,我从一开始就没有预料到这一点,在我尝试了这个然后TTAAADDAAA之后也不会尝试这个!这是工作,我不知道怎么做,但它非常棒。 . . ^_^
  • @DebyFerdian 我添加了一个完整的示例。这个简单的表单是在 Google Apps 脚本中创建的。
  • 嗨,@Cooper?我有一点问题,这是在另一个线程中可用的。我们如何在同一个窗口中显示或加载多个弹出窗口,但注意:不是与其他应用程序的组合,如; “侧边栏”。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-05
相关资源
最近更新 更多