2013-08-22 1 views
0

Все,Отправить по электронной почте от Google Spreadsheet опуская запятые

я использую аналогичный сценарий к ниже для отправки сообщений электронной почты из таблицы Google:

// 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

Он дает 1 строку на строку SS и 1 столбец на столбец SS в таблице. Наверное, я не понял, что тебе нужно. –

+0

Посмотрев на мои данные, я могу определенно работать с тем, что у вас есть. Спасибо за помощь. –

1

Range.getValues() возвращает 2D-массив, и строковое представление этого 2D-массива печатается в вашем письме. В зависимости от того, как вы хотите показать его в своем электронном письме, вам необходимо обработать каждый элемент по отдельности. Что-то вроде ...

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 +/- строк в письме. Должен ли я повторить этот код для каждой строки и дать уникальное имя для каждой строки? Подобно var values1 = .... var values2 = ..... var values3 = ....... и т. Д. –

+0

Я могу редактировать электронную таблицу и поместить все данные в диапазон, похожий на «K2: N40». Если бы я сделал это, будет ли это работать с кодом, который у вас выше? –

+0

Вы пробовали код, который я предоставил? Заметил цикл for? Вам не нужно иметь одну переменную для каждой строки. В стороне, если какой-либо язык программирования заставил вас это сделать, это было бы бесполезным – Srik