2015-02-04 1 views
1

У меня есть простой скрипт для отправки электронной почты на основе данных в электронной таблице.Скрипт Google Apps возвращает правильные значения + несколько необязательных запятых

Столбец 1 является предметом. Колонка 2,3,4,5 - тело.

Проблема в том, что я погружен в электронную таблицу - чем больше запятая отправляет в конце сообщения электронной почты. Если это 1-я строка - никаких дополнительных запятых. 2-й ряд - 2 запятые, 3-й ряд - 4 запятые и т. Д.

Как избавиться от этих необязательных запятых? Мне очень жаль этот вопрос.

Код

function sendEmails() { 
    var time = new Date; 
    Logger.log(time); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var hojaRegistro = SpreadsheetApp.getActive(); 
    var activeRow = hojaRegistro.getActiveCell().getRow(); 
    var subject = sheet.getRange(activeRow, 1, activeRow, 1).getValues(); 
    var message = sheet.getRange(activeRow, 2, activeRow, 5).getValues(); 
    MailApp.sendEmail('[email protected]', subject, message); 
    sheet.getRange(activeRow, 6).setValue('E-mail sent on ' +time); 
    SpreadsheetApp.flush(); 
} 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Send Email", 
    functionName : "sendEmails" 
    }]; 
    sheet.addMenu("Script Center Menu", entries); 
}; 

ответ

1

Если вы хотите, чтобы получить первый столбец в активной строке в качестве субъекта и столбцы 2,3,4,5, как тело, вы должны получить диапазон от одной и той же строки для всех столбцов. Для этого вы должны указать третий параметр как 1 вместо activeRow(var message = sheet.getRange(activeRow, 2, 1 , 5).getValues();).

Сделано смену кода.

Попробуйте это:

function sendEmails() { 
    var time = new Date; 
    Logger.log(time); 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    var hojaRegistro = SpreadsheetApp.getActive(); 
    var activeRow = hojaRegistro.getActiveCell().getRow(); 
    var subject = sheet.getRange(activeRow, 1, activeRow, 1).getValues(); 
    var message = sheet.getRange(activeRow, 2, 1 , 5).getValues(); 
    MailApp.sendEmail('[email protected]', subject, message); 
    sheet.getRange(activeRow, 6).setValue('E-mail sent on ' +time); 
    SpreadsheetApp.flush(); 
} 

function onOpen() { 
    var sheet = SpreadsheetApp.getActiveSpreadsheet(); 
    var entries = [{ 
    name : "Send Email", 
    functionName : "sendEmails" 
    }]; 
    sheet.addMenu("Script Center Menu", entries); 
} 

Надежда, что помогает!

+0

Спасибо, человек :) Я уже понял это. Должен был читать документацию ближе https://developers.google.com/apps-script/reference/spreadsheet/sheet#getRange%28Integer,Integer,Integer,Integer%29 – Link

+0

Рад, что это сработало для вас. Примите мой ответ, если это полезно для вас. Благодаря! – KRR

+0

Выполнено, извините, что я забыл сделать это на первом месте. – Link

Смежные вопросы