首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我需要使用Google Apps脚本的随机唯一代码

我需要使用Google Apps脚本的随机唯一代码
EN

Stack Overflow用户
提问于 2014-07-19 01:31:48
回答 1查看 1.9K关注 0票数 0

我创建了一个Google表单,用于从用户那里收集数据。在此表单中,我将询问站点名称,并希望将其替换为唯一的代码。

https://docs.google.com/forms/d/1JTStfAZGFBAFjVxgH0aZlMUroVsBijC0sfOvuXvqce8/viewform?usp=send_form#start=invite

我已经为此用谷歌应用程序脚本编写了代码,如下所示,但每次它都会生成新的唯一代码,也会替换以前的代码。

代码语言:javascript
复制
function SendConfirmationMail(e) {
  try {
    var ss, bcc, sendername, subject, columns, username;
    var message, value, textbody, usermail, track, code;

    // This is your email address and you will be in the BCC
    bcc = Session.getActiveUser().getEmail();

    // This will show up as the sender's name
    sendername = "Support Team";

    // This is the submitter's Name
    username = e.values[1];

    // This is the submitter's email address
    usermail = e.values[2];

    // Custom subject for Google Docs emails
    subject = "Support Ticket";

    // Random Code for Google Docs emails
    ss = SpreadsheetApp.getActiveSheet();
    track = new Array();
    var chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
    var string_length = 10;
    var lastRow = ss.getLastRow()-1;
    var randomstring = '';
    for (var i=0; i<string_length; i++) {
      var rnum = Math.floor(Math.random() * chars.length);
      randomstring += chars.substring(rnum, rnum+1);
    }
    track.push(randomstring);

    code = ss.getRange(2, 5, lastRow, 1).setValue(track);

    // This is the body of the auto-reply
    message = "Hi <b>" +username+ " !!!</b> <br><br> Your message has been successfully received.<br>";


    GmailApp.sendEmail(usermail, subject, messag, 
                       {bcc: bcc, name: sendername, htmlBody: message});

    } catch (e) {
        Logger.log(e.toString());
    }

}

但我想为每个提交生成唯一的代码。请及时通知我。

EN

回答 1

Stack Overflow用户

发布于 2014-07-19 03:43:41

我以前也遇到过这类事情,复杂性取决于它所需要的安全性(据我所知,这都是内部的,所以不是很多)。

我不确定我是否理解为什么你要把你独特的代码作为一个可编辑的文本框(我假设站点名称只是一个保留的东西,你最终会把它变成一个不可编辑的div,或者根本不显示它)。

无论哪种方式,一种方法是在properties中保留以前所有唯一代码的数组,尽管如果这是经常使用的,那么这可能太多了(看看quotasWolfram Alpha说保守地说它大约有500个单词)。

因此,也许您可以有几个scriptDB(甚至是一个电子表格,尽管速度较慢),您可以将它们组合在一起,以获得所有先前代码的最终数组。您的randomstring算法可能没有问题(只要您检查以确保它不存在于scriptDB数组中)。

查看Generate random string/characters in JavaScript中的其他随机字符串想法,但只需确保(同样,如果这变得非常流行)有足够的新可能性。

您不希望在寻找新代码时挂起此代码,因此如果迭代次数超过100次,我还会添加一个计数器并执行其他操作(如果这都是内部代码,那么使用5-10个字符的代码可能不是一个坏主意,这样可以大大降低找不到新字符串的机会)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24830722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档