2017-02-20 2 views
2

В попытке автоматизировать некоторые из моих работ, я начинаю изучать основы сценариев Google.Нужно отправитьNotification для нескольких столбцов и листов

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

Текущий результат сценария - это электронное письмо по второй функции 'sendnotification'.

Вопрос: Как получить скрипт для рассмотрения обеих функций?

Я знаю, что этот код можно свести к минимуму, используя IF fucntion в лучшем виде, но я в недоумении.

В некоторых контекстах: Это используется в производственной операции. Производство производится за пределами компании, и когда они вводят количество в столбец 10 на любом листе, я хочу, чтобы он отправил группе людей письмо, с которым я работаю. Аналогичным образом, когда тестирование качества продукта выполняется, я хочу иметь возможность вводить в колонку 12 и отправлять удаленную компанию по электронной почте.

function sendNotification() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
//Get Active cell 
    var mycell = ss.getActiveSelection(); 
    var cellcol = mycell.getColumn(); 
    var cellrow = mycell.getRow(); 
//Define Notification Details 
    var recipients = "[email protected]"; 
    var subject = "Disc production was entered on the "+ss.getName(); 
    var body = ss.getName() + " has been updated with an amount produced. Visit " + ss.getUrl() + " to view the quantities entered."; 
//Check to see if column is A or B to trigger 
    if (cellcol == 10) 
    { 
//Send the Email 
    MailApp.sendEmail(recipients, subject, body); 
    } 
//End sendNotification 
} 
function sendNotification() { 
    var ss = SpreadsheetApp.getActiveSpreadsheet(); 
    var sheet = ss.getActiveSheet(); 
//Get Active cell 
    var mycell = ss.getActiveSelection(); 
    var cellcol = mycell.getColumn(); 
    var cellrow = mycell.getRow(); 
//Define Notification Details 
    var recipients = "[email protected]"; 
    var subject = "A lot of disc has been RELEASED by XYZ Company"; 
    var body = ss.getName() + " has been updated with a lot of disc that were released by XYZ Company. Visit " + ss.getUrl() + " to view this updated information."; 
//Check to see if column is A or B to trigger 
    if (cellcol == 12) 
    { 
//Send the Email 
    MailApp.sendEmail(recipients, subject, body); 
    } 
//End sendNotification 
} 
+1

Чтобы уточнить, вы хотите, чтобы письмо отправлялось автоматически при вводе в столбец 10 или столбец 12? Как с триггером onedit? –

+0

Исправлена ​​автоматическая электронная почта, когда данные вводятся в любой столбец. –

ответ

0

Вам нужно настроить onEditinstallable trigger (если вы еще не сделали) и назначить его на следующей функции:

function onEditEmailSender(e) { 
    var sheetName = e.range.getSheet().getName(); 

    if (sheetName === "tab1" || sheetName === "tab2") { 
    var col = e.range.getColumn(); 

    if (col === 10) 
     //send col 10 email 
    else if (col === 12) 
     //send col 12 email 
    } 
} 

Спусковой onEdit передает параметр со всеми видами информации, наиболее полезной в вашем случае является e.range. Этот объект Range соответствует ячейке, которая была отредактирована для запуска события onEdit. Вы можете использовать его, чтобы получить имя листа (то, что вы называете вкладкой) и отредактированный столбец.

Используя эту информацию, вы можете отправить соответствующее электронное письмо. Удачи!