表单的Google Apps脚本:希望通过电子邮件向用户发送特定号码 [英] Google Apps Script for Forms: Want to send users specific number on email

查看:360
本文介绍了表单的Google Apps脚本:希望通过电子邮件向用户发送特定号码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有可能要求用户在FORM中写下他们的电子邮件地址,然后他们收到带有唯一号码的电子邮件? 我发现如何发送自动电子邮件到提交者在这里 - http://www.labnol.org/internet/auto-confirmation - 电子邮件/28386/

但是不知道如何向他发送每个唯一的号码!

解决方案

您可以尝试上面的代码来检索表单响应的唯一ID。但它不是排序数字(1,2,...)。这是由表单生成的唯一随机数。我的建议并不是尝试构建从1开始并继续前进的内容,因为它是异步的,您没有安全性来拥有分类的项目列表。有关详细信息,请参见此处。 / p>

  / ** 
*为一个名为问题1和问题2的2个问题的表单
*这个函数需要直接关联到表单
*并且它需要关联到一个触发器上表单提交
*作为参数给出的e是由表单提交触发器生成的
* /
函数submitFormFunc(e){
var items = e.response.getItemResponses();
var responses = {};
for(var i = 0; i< items.length; i ++){
responses [items [i] .getItem()。getTitle()] = items [i] .getResponse();
}

var responseTable = [];
var responseIndex = [时间戳,ID,问题1,问题2];
responseTable.push(e.response.getTimestamp()。toString());
responseTable.push(e.response.getId());
responseTable.push(responses [question 1]); //我的表单有2个问题命名为问题1和问题2
responseTable.push(responses [question 2]);
responseTable.push(FormApp.getActiveForm()。getResponse(e.response.getId())。getEditResponseUrl());
SpreadsheetApp.openById(YOUR_SPREADSHEET_ID)。appendRow(responseTable);
}



< - > - 编辑 -



如果您想要更短的时间,您可以使用时间戳:

更改(或添加) responseTable.push(e.response。 getTimestamp()。toString()); for

  responseTable.push(e.response.getTimestamp ().getTime()的toString())。 

甚至更短,但效率稍低:

您可以添加一行:

  responseTable.push(generateUnique()); 

并添加以下功能:

  function generateUnique(){
var vals = SpreadsheetApp.openById(YOUR_SPREADSHEET_ID)。getRange(A:A)。getValues();
var ids = [];
for(var i in vals){
ids.push(vals [0]);
}
var newId = Math.floor(Math.random()* 100); (ids.indexOf(newId)> -1){
newId = Math.floor(Math.random()* 100); //将100更改为更大的内容(如果需要)
while
}
Logger.log(newId);
return(newId);
}


It is possible to ask users to write their email addresses in FORM and after that they recieve email with unique number?

I find out how to send automatic email to submitter here - http://www.labnol.org/internet/auto-confirmation-emails/28386/

But don't know how to send to him unique number each!

解决方案

you could try the above code to retrieve the unique id of the form response. But it's not sorted numbers(1,2,...). It's a unique random number generated by the form. my advice is not to try to build something starting to 1 and going further, as it's assynchronious you do not have the security to to have a sorted list of items. see here for details.

/**
* for a form with 2 question named "question 1" and "question 2"
* this function need to be associated directly to the form
* and it need to be associated to a trigger "on form submit"
* the "e" given as argument is generated by the form submit trigger
*/
function submitFormFunc(e) {
  var items = e.response.getItemResponses();
  var responses={};
  for(var i = 0; i< items.length; i++) {
   responses[items[i].getItem().getTitle()]=items[i].getResponse();
  }

  var responseTable = [];
  var responseIndex = ["Timestamp","ID","question 1","question 2"];
  responseTable.push(e.response.getTimestamp().toString());
  responseTable.push(e.response.getId());
  responseTable.push(responses["question 1"]); // my form have 2 questions named "question 1" and "question 2"
  responseTable.push(responses["question 2"]);
  responseTable.push(FormApp.getActiveForm().getResponse(e.response.getId()).getEditResponseUrl());
  SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").appendRow(responseTable);
}

--EDIT--

if You want something shorter you can use the time stamp:

change (or add) responseTable.push(e.response.getTimestamp().toString()); for

responseTable.push(e.response.getTimestamp().getTime().toString());

or even shorter but a little less efficient:

you can add a line:

responseTable.push(generateUnique());

and add the function:

function generateUnique(){
  var vals =  SpreadsheetApp.openById("YOUR_SPREADSHEET_ID").getRange("A:A").getValues();
  var ids=[];
  for(var i in vals){
    ids.push(vals[0]);
  }
  var newId = Math.floor(Math.random()*100); // change 100 for something bigger if needed
  while(ids.indexOf(newId)>-1){
    newId = Math.floor(Math.random()*100);
  }
  Logger.log(newId);
  return(newId);
}

这篇关于表单的Google Apps脚本:希望通过电子邮件向用户发送特定号码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆