2015-03-03 4 views
0

Я пытаюсь настроить сценарий для электронной таблицы google, который будет отправлять по электронной почте конкретному человеку всякий раз, когда ячейка в столбце M будет изменена на 'y'. Я нашел этот скрипт, email notification if cell is changed , и я пытаюсь изменить его в соответствии с моими потребностями, но у меня возникла проблема с его работой. Это мой сценарий, как сейчас.Отправка электронной почты при изменении ячейки в электронной таблице Google

function onEdit(e){ 
    Logger.log(e) 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    Logger.log(ss) 
    var sheet = ss.getActiveSheet(); 
    Logger.log(sheet) 
    var cell = ss.getActiveCell().getA1Notation(); 
    Logger.log(cell) 
    var row = sheet.getActiveRange().getRow(); 
    Logger.log(row) 
    var column = sheet.getActiveRange().getColumn(); 
    Logger.log(column) 
    var cellvalue = ss.getActiveCell().getValue().toString(); 
    Logger.log(cellvalue) 
    var recipients = "[email protected]"; //email address will go here 
    var message = ''; 
    if(cell.indexOf('M')!=-1){ 
message = sheet.getRange('M'+ sheet.getActiveCell().getRowIndex()).getValue() 
} 
    Logger.log(message) 
    Logger.log(cell) 
    var subject = 'Update to '+sheet.getName(); 
    var body = sheet.getName() + ' has been updated. Visit ' + ss.getUrl() + to view the changes on row: ' + row; //New comment: «' + cellvalue + '». For message: «' + message + '»'; 
    MailApp.sendEmail(recipients, subject, body); 
} 

Если у кого-то есть представление о том, что мне не хватает, я был бы очень признателен за любую помощь.

Спасибо,

Виктор

ответ

0

я думаю, что это может решить проблему проведения:

function onEdit(e) { 
var ssActive = e.source; 
var ssActiveRange = ssActive.getActiveRange(); 
var ssActiveRangeVal = ssActiveRange.getValue(); 
var ActiveRow = ssActiveRange.getRow(); // if needed to put on body's message 
var ActiveColumn = ssActiveRange.getColumn(); 

if((ssActiveRangeVal=='y' || ssActiveRangeVal=='Y') && ActiveColumn==13){ // ActiveColumn==13 for M 
    // write down your mail code here 
} 

}

+0

Hi. Спасибо тебе за это. Я попробовал, и пока я могу запустить его вручную, если я настроил триггер, это не сработает. У вас есть мысли? –

0

Вы не можете отправить по электронной почте из триггера onEdit. Что вам нужно сделать, это сохранить изменения в качестве свойства документа, а затем настроить триггер, основанный на времени, который отправляет содержимое свойства по электронной почте и сбрасывает очередь.

+0

Привет. Я не совсем понимаю, что вы имеете в виду. Не могли бы вы объяснить это немного больше? Спасибо. –

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