小编use*_*752的帖子

提交Google表单后显示自定义消息

我有一个Google表单,允许用户输入他们的信息.提交表单后,数据会作为新行插入Google电子表格.

但是我想在提交表单后立即显示动态消息,覆盖原始的"谢谢"消息.新消息将显示他们刚填写的信息,并为其分配编号.

例如,玛丽填写了她的数据并提交了表格.由于Mary是第5个提交此表单的人,因此该消息显示她的号码为5.

有没有办法实现这个目标?我一直在研究Google App Script和HTML服务,但我不确定这是否正确.

请注意,我们已经使用电子邮件发送此邮件已有好几年了,但是用户强烈建议在表单提交后立即显示其ID,这将使许多事情变得更加容易.

非常感谢你!

更新

我一直在努力,现在我可以创建一个向电子表格插入新行的网页.但另一个问题:如何发布网页?当我打开"/ dev"链接时,它工作正常; 但是,当我打开"/ exec"链接时,它说找不到"Index.html",我确信有一个名为Index.html的文件.

customization google-apps-script google-forms

11
推荐指数
2
解决办法
4万
查看次数

Google Apps Script:将行附加到电子表格并获取最后一行

我有一个新的 Google App Script 项目,其中包含一个允许用户输入数据的表单(不是 Google 表单)。数据将被提交并插入到 Google 电子表格中。

我想给每个用户一个唯一的 ID,它是最后一行 + 1。我尝试了一些如下代码:

function submitData(data){
  var user_id = sheet.getLastRow();
  sheet.appendRow([user_id, data.name, data.email]);
  return user_id;
}
Run Code Online (Sandbox Code Playgroud)

问题是当两个用户同时提交表单时,他们会得到相同的 user_id。我相信可能的原因是他们都getLastRow()在其中一个打电话之前先打电话appendRow()

LockService但是我尝试使用新行覆盖旧行:

var COLUMN_USER_ID = 1;
var COLUMN_NAME = 2;
var COLUMN_EMAIL = 3;

function submitData(data){
  var lock = LockService.getPublicLock();
  if (lock.tryLock(10000))  {

    var newRow = sheet.getLastRow() + 1;
    var user_id = newRow - 1;

    sheet.getRange(newRow, COLUMN_USER_ID).setValue(user_id);
    sheet.getRange(newRow, COLUMN_NAME).setValue(data.name);
    sheet.getRange(newRow, COLUMN_EMAIL).setValue(data.email);

    lock.releaseLock();
    return user_id;

  } else {
    return "Lock …
Run Code Online (Sandbox Code Playgroud)

locking google-sheets google-apps-script

2
推荐指数
1
解决办法
6175
查看次数