【问题标题】:How to correctly write into Google Spreadsheet with Google Apps Script?如何使用 Google Apps 脚本正确写入 Google 电子表格?
【发布时间】:2017-06-04 21:00:26
【问题描述】:

我正在创建一个带有表单的网页,我必须将数据发送到 Google 电子表格。 I found a good code searching this site 但我不知道如何编辑它以将我的数据存储在 Google 电子表格中。

我的表格是这样制作的

<form name="reqForm" id="reqForm" method="get" action="SCRIPT" accept-charset="UTF-8">
            <input type="hidden" name="reqID" id="reqID" />
            <label for="name">Name:</label>
               <input type="text" name="Name" id="Name"/>
            <label for="surname">Surname:</label>
               <input type="text" name="surname" id="surname"/>
            <label for="SERIAL">Serial:</label>
               <input type="text" name="serial" id="serial"/>
            <label for="email">E-mail:</label>
               <input type="text" name="email" id="mail"/>
            <label for="text">Request:</label>
               <textarea id="text"></textarea>
               <input type="submit" value="Send" />
</form>

脚本是一样的,来自我链接的例子(我只是因为错误而更改了函数名称)

function doPost(e){

   var id = "";
   var name = e.parameter['name'];
   var surname = e.parameter['surname'];
   var serial = e.parameter['serial'];
   var eMail = e.parameter['email'];
   var text = e.parameter['text'];
   var date = new Date();
   var ans = ""
   var flag = "WIP";

   var vals = [id, date, name, surname, serial, eMail, text, ans, flag];

  var sheetObj = SpreadsheetApp.openById("myKey").getSheetByName('Requests').appendRow(vals);
  // return ContentService.createTextOutput(e);

}

如果我这样填写表格:

  • 姓名:约翰
  • 姓氏:Doe
  • 序列号:123456
  • 邮箱:123@456.com
  • 请求:你好

在我的电子表格中,我按以下顺序查看数据: [DATE] [Serial] [Mail] [Name] [Surname]

如何修改函数以我可以决定的某种顺序将我的数据放入电子表格?

[UPDATE]:我更新了代码:结果是一行正确排序但填充了“未定义”...

【问题讨论】:

  • form标签中的方法是GET:method="get"你的Apps脚本文件中的函数名是doPost()这样不行。您要么需要发出 POST 请求,要么使用 doGet() 所以,. . . doGet() 的 GET 和 doPost() 的 POST 他们需要匹配。
  • 是的,我想通了,但是当我尝试使用 method="post" 时出现错误,它说找不到函数 doPost。这就是为什么我写了“我因为一个错误而不得不改变”

标签: html google-apps-script google-sheets


【解决方案1】:

提交表单后,可以使用e.parameter[&lt;parameter_name&gt;]获取表单参数。

例如获取姓氏,

var surname = e.parameter['surname'];

要在 Google 电子表格中插入表单数据,

var sheetObj = SpreadsheetApp.openById("myKey").getSheetByName("sheetname");
//Here you can shuffle the order of values anyway you want.
sheetObj.appendRow([DATE, Serial, Mail, Name, Surname]);
//or you can do it like this
sheetObj.appendRow([DATE, Mail, Name, Surname, Serial]);

希望这会有所帮助。

【讨论】:

  • 嗨!感谢您的回复!我尝试过这种方式,但似乎该函数无法识别参数。我听从了你的建议,但现在它只给了我日期,因为我在我的代码中生成了它,其他值都消失了?
  • 您是否将脚本部署为具有较新版本的 Web 应用程序?如果没有,脚本将执行旧版本的代码
  • 是的,但它似乎根本不起作用(我将输出更改为检查,它仍然是一样的......)我会尝试创建一个全新的脚本......
  • 如果可能的话与我们分享一个虚拟脚本
  • 好的,我创建了一个新项目并且填充工作正常,除了我现在看到我的行充满了“未定义”?‍♂️
猜你喜欢
  • 2012-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-13
相关资源
最近更新 更多