首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过Google Apps脚本向自动电子邮件添加额外的列

通过Google Apps脚本向自动电子邮件添加额外的列
EN

Stack Overflow用户
提问于 2014-06-03 22:45:24
回答 2查看 542关注 0票数 0

所有的-

我是Google Apps脚本编程的新手,我根据网上的一些帖子拼凑了一个脚本。基本上,我已经将这个脚本分配给了一个收集表单响应的Google工作表。每次新提交时,都会向答复者发送一条确认消息。

我通过脚本创建了一个额外的列,它不是表单的一部分。我也希望这个专栏作为确认电子邮件的一部分发送,但我在添加它时遇到了麻烦。在本例中,它是列'AC‘或列29。下面是我一直在玩的脚本...谁能提供一些指导,如何将AC (#29)栏中的数据添加到我的消息的底部?

提前感谢!

代码:

代码语言:javascript
复制
function SendConfirmationMail(e) {

try {

    var ss, cc, sendername, subject, columns;
    var message, value, textbody, sender;

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

    // This will show up as the sender's name
    sendername = "My Name";

    // Optional but change the following variable
    // to have a custom subject for Google Docs emails
    subject = "Submission Confirmation";

    // This is the body of the auto-reply
    message = "Below are your selections:<br><br>";

    ss = SpreadsheetApp.getActiveSheet();
    columns = ss.getRange(1, 1, 1, ss.getLastColumn()).getValues()[0];

    // This is the submitter's email address
    sender = e.namedValues["Email Address"].toString();

    // Only include form values that are not blank
    for ( var keys in columns ) {
        var key = columns[keys];
        if ( e.namedValues[key] ) {
            message += key + ' :: '+ e.namedValues[key] + "<br />"; 
        }
    }

    textbody = message.replace("<br>", "\n");

    GmailApp.sendEmail(sender, subject, textbody, 
                        {cc: cc, name: sendername, htmlBody: message});

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

}

EN

回答 2

Stack Overflow用户

发布于 2014-06-04 05:27:43

一个次要起点

根据下面的标准,通常变量ss代表电子表格,您可以从中派生一个变量sheet,如下所示:

var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = SpreadsheetApp.getActiveSheet();

这是一个小问题,但可以帮助提高可读性,并避免您自己/任何其他使用它的人感到困惑。

至于获取列AC数据,为什么不尝试一下前面使用的getRange方法:

var data = sheet.getRange(startRow, column, numRows).getValues();

其中startRow是AC列中的第一行数据,column是第29列的数字29,numRows是您希望从AC列中获得的数据行数。

假设您想要从第1行开始的第29列中的10行。

var data = sheet.getRange(1, 29, 10).getValues();

然后,您可以简单地将其附加到消息正文中,如下所示:

GmailApp.sendEmail(sender, subject, textbody +column29Data, {cc: cc, name: sendername, htmlBody: message});

如果这对你有用,请让我知道。

票数 0
EN

Stack Overflow用户

发布于 2014-06-05 11:08:00

您似乎是在使用e.namedValues拉取列值,但这只会用通过表单提交的字段和值填充。相反,直接从电子表格准备这些值,使用SpreadsheetApp.getActiveRange().getRow()来确定正在处理的是哪一行。

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

https://stackoverflow.com/questions/24018187

复制
相关文章

相似问题

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