Google Apps脚本表单,生成唯一ID号

时间:2012-10-22 21:29:11

标签: javascript random google-apps-script google-form

我创建了一个简单的Google表单,其中包含以下字段:

姓名,电子邮件,薪资和请求。

当用户填写表单时,我想向他/她发送包含该信息的电子邮件。但是,我想使用“请求”字段插入用户可以参考的唯一号码,如果他们需要进一步的通信。如果用户在“请求”字段中输入任何内容,我想丢弃它并使用我生成的数字(在响应和电子表格中)。

我已经能够使用我发现的其他信息拼凑脚本了。它似乎适用于除了返回给用户的电子邮件响应之外的所有内容。它不包含我想在“请求”字段中使用的数字,而是发回用户放入的任何输入'请求'字段。电子表格看起来没问题(它在“请求”字段中有我的号码。)

这是我的剧本:

function sendFormByEmail(e) {      
  var capsht = SpreadsheetApp.getActiveSheet();  
  var caprow =  SpreadsheetApp.getActiveSheet().getLastRow();  
  capsht.getRange(caprow,5).setValue("Cap-"+caprow);  

  var admin = "admin@xxx.com";  

  try {  

    var recipient = e.namedValues["Email"];  
    var subject = "Capacity Request Form Received";    

    var s = SpreadsheetApp.getActiveSheet();  
    var headers = s.getRange(1,1,1,s.getLastColumn()).getValues()[0];      
    var message = "";      

    for (var i in headers)  
      message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n";   
      MailApp.sendEmail(recipient, subject, message);   

    }   

  catch (error) {  
    MailApp.sendEmail(admin, "Error with form submission response email", error.message);  
  }  

}

1 个答案:

答案 0 :(得分:1)

尝试这样:

(在代码中添加评论并删除重复)

function sendFormByEmail(e)   
{      
var capsht = SpreadsheetApp.getActiveSheet();  
var caprow = capsht.getLastRow();  
var codenumber = "Cap-"+caprow
capsht.getRange(caprow,5).setValue(codenumber);  

var admin = "admin@xxx.com";  

try {  

var recipient = e.namedValues["Email"];  
var subject = "Capacity Request Form Received";    

var headers = capsht.getRange(1,1,1,capsht.getLastColumn()).getValues()[0];      
var message = "";      

for(var i in headers)  
if(i!=4){ 
message += headers[i] + ' = '+ e.namedValues[headers[i]].toString() + "\n\n";   
}else{  // if i==4 (column nr5)then use your code number
message += headers[i] + ' = '+ codenumber + "\n\n"; 
}
MailApp.sendEmail(recipient, subject, message);   

}   

catch (error)  
{  
MailApp.sendEmail(admin, "Error with form submission response email", error.message);  
}  

}