2013-08-22 182 views
0

所有,从谷歌电子表格发送电子邮件省略

我使用一个类似的脚本到下面的逗号从谷歌电子表格发送电子邮件:

// Sends an email when ....... 
function emailInfoRequired(row) { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var subject = "Info Needed: " + sheet.getRange("F19").getValues(); 
    var recipients = "[email protected]" 
    var message = "<HTML><BODY>" 
    + "<P>" + sheet.getRange("K1").getValues() 
    + "<BR>" + sheet.getRange("K2").getValues() 
    + "</HTML></BODY>"; 
    MailApp.sendEmail(recipients, subject, "", {htmlBody: message}); 
} 

我想要做的是,而不是使用单个单元格,我想包括一个范围,如:sheet.getRange(“K2:N2”)。getValues()

问题是,当我这样做时,电子邮件正文之间的每个单元格之间的逗号范围使电子邮件没有任何意义,加上看起来丑陋。我尝试格式化单元格作为纯文本,但没有帮助。有没有办法发送一个范围的电子邮件,而不是显示逗号?

回答

1

你甚至可以使其更加优雅使用HTML表格是这样的:

// Sends an email when ....... 
function emailInfoRequired(row) { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var subject = "Info Needed: " + sheet.getRange("F19").getValues(); 
    var recipients = "[email protected]" 
    var data = sheet.getRange('A2:C25').getValues();// define your range here 
    var message = '<HTML><BODY><table style="background-color:lightblue;border-collapse:collapse;" border = 1 cellpadding = 5><tr>';// change eventually the color here 
    for (var row=0;row<data.length;++row){ 
    for(var col = 0;col<data[0].length;++col){ 
     message += '<td>'+data[row][col]+'</td>'; 
    } 
    message += '</tr><tr>'; 
    } 
    message += '</tr></table></body></HTML>'; 
    MailApp.sendEmail(recipients, subject, "", {htmlBody: message}); 
} 

插图例如:

enter image description here

+0

这很有效地保持了同一行中的所有内容。我肯定会坚持使用该代码。通过这个项目,我基本上试图连接每一行的数据,并在电子邮件中显示为单个值。使它在电子邮件中的1行= 1行文本。 –

+0

它在表中为每个SS列和每个SS列创建1列。我想我不明白你需要什么。 –

+0

在查看我的数据之后,我可以肯定地处理您的工作。谢谢您的帮助。 –

1

Range.getValues()返回二维数组,并在您的电子邮件中打印此二维数组的字符串表示形式。根据您希望在电子邮件中显示的方式,您必须单独处理每个元素。喜欢的东西...

function emailInfoRequired(row) { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); 
    var subject = "Info Needed: " + sheet.getRange("F19").getValues(); 
    var recipients = "[email protected]" 
    var values = sheet.getRange("K2:N2").getValues(); 
    var message = "<HTML><BODY>" ; 
    for (var row = 0 ; row < values.length ; row++){ 
    message += "<P>" ; 
    for (var col= 0 ; col < values[row].length ; col++){ 
     message += "<BR>" + values[row][col]; 
    } 
    } 
    message += "</HTML></BODY>"; 
    MailApp.sendEmail(recipients, subject, "", {htmlBody: message}); 
} 
+0

哇,我没有意识到这将是复杂的。我的代码由电子邮件中的35 +/-行组成。我是否需要为每一行重复该代码并为每一行赋予一个唯一的名称? Like var values1 = .... var values2 = ..... var values3 = .......等。 –

+0

我可以编辑电子表格并将所有数据放在类似“K2:N40”的范围内。如果我这样做了,那么你的代码是否可以工作在上面? –

+0

您是否尝试过我提供的代码?注意到for循环?你不必为每一行都有一个变量。顺便说一句,如果有任何编程语言让你这样做,这将是一个毫无价值的 – Srik

相关问题