在弹出Google电子表格中创建Google表单。这可以吗?

时间:2017-07-23 06:09:58

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

参考:

Single Google Form for multiple Sheets



重新声明:

  1. 我有点难以让自己的写作变得更好或更好 理解(少英语)。
  2. 我对Google Apps脚本(GAS)有一些了解。
  3. 我改变了“MyURLDoc”和“MyIdDoc”作为合作伙伴 矿。



  4. 问题:

    如何在Google电子表格中制​​作一张Google表格?





    尝试1:

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





    尝试2: 以下作为参考在那里worte!

    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的项目,或者您没有权限

1 个答案:

答案 0 :(得分:2)

使用Google表单创建补充工具栏

我只是去了一个旧表单并获得了嵌入代码。我加载到我在另一个项目上的侧边栏并粘贴了嵌入代码,这是一个iframe,除了大小之外它完全加载,我运行了表单,确定它将数据加载到包含它的电子表格中。

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

Code.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>

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

enter image description here

enter image description here