【问题标题】:How do you post form submissions to a Google Drive Spreadsheet using Google App Scripts如何使用 Google App Scripts 将表单提交发布到 Google Drive 电子表格
【发布时间】:2012-08-12 04:32:51
【问题描述】:

我想在我的网站上创建一个表单,当用户提交时,它会将他们的数据发布到我的 Google 云端硬盘中的特定电子表格中。如何使用 Google App Scripts 做到这一点?

示例表格

<form method='post' action='https://script.google.com/macros/s/xxxx.....'>
  Favorite Color <input type='text' value='' name='color' />
  Favorite Ice Cream Flavor <input type='text' value='' name='flavor' />
  <input type='button' value='submit' />
</form>

这样当我点击提交时,它会在 Google Drive 电子表格中创建一条记录

| color | flavor |
   red    vanilla

这对 GAS 是否可行,还是更适合 Google Drive SDK(通过 Javascript)的任务?


更新

使用How to add form elements to UI App Service 中的示例完成脚本

这是我整理的当前脚本......它有效!!!

var SPREADSHEET_ID = '0Aqa6DbU_0sv7dGNrMEEybjNrdm00MlpwTTNx...';

function doPost(e) {
  var app = UiApp.getActiveApplication();

  SpreadsheetApp.openById(SPREADSHEET_ID).getSheetByName('RequestInvites').appendRow([e.parameter.emailAddress, 'hash123']);

  app.add(app.createLabel("Form submitted. Your email address is: '" + e.parameter.emailAddress));

  return app;
}

function createForm(e){
   var app  = UiApp.createApplication();
   var form = app.createFormPanel();
   var flow = app.createFlowPanel();

   flow.add(app.createLabel('Enter your email address to get an invitation').setId('inviteLabel'));
   flow.add(app.createTextBox().setId('emailAddress').setName('emailAddress'));
   flow.add(app.createSubmitButton("Request Invite"));
   form.add(flow);

   app.add(form);
   return app;
}

【问题讨论】:

    标签: post google-apps-script spreadsheet google-drive-api


    【解决方案1】:

    您可以使用 GAS 做到这一点。在您的脚本中,使用function doPost(e) 在单击提交按钮(您可能已经忘记;)时检索用户输入。

    在 doPost 函数中,您可以使用它们的“名称”属性访问输入,如下所示:e.parameter.colore.parameter.flavor

    然后,您可以使用电子表格服务在电子表格中书写。此服务的文档是here。因此,您打开电子表格,并在正确的工作表中添加一行:SpreadsheetApp.openById('id of your spreadsheet').getSheetByName('colors_and_flavors').appendRow([e.parameter.color, e.parameter.flavor]);

    让我们回顾一下:

    function doPost(e) {
      SpreadsheetApp.openById('id of your spreadsheet').getSheetByName('colors_and_flavors').appendRow([e.parameter.color, e.parameter.flavor]);
    }
    

    希望对您有所帮助! ;)

    【讨论】:

    • 感谢 doPost 的解释。现在的问题是我正在使用 UI 服务来生成应用程序。现在我有一个非常基本的脚本。也许你可以帮我弄清楚什么是错的。生病更新我的问题 - 再次想到我刚刚意识到我需要添加一个表单元素。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多