Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Google Apps Script функция onEdit(event) (https://javascript.ru/forum/misc/69277-google-apps-script-funkciya-onedit-event.html)

Марина Худякова 10.06.2017 19:22

Google Apps Script функция onEdit(event)
 
Добрый день!

У меня есть два элемента onEdit
Элемент кода:

function onEdit(event)
{

SmartDataValidation(event);

}

function onEdit(event)
{
var sheetName = event.source.getActiveSheet().getSheetName();
var sheet = event.source.getActiveSheet();
var idCol = event.range.getColumn();
var idRow = event.range.getRow();
if (idCol === 13 && sheetName === 'Заказы'){
sheet.getRange(idRow, idCol +8).setValue(new Date().toString());
}
}

Как сделать так, чтобы работали оба элемента, а не перекрывали друг друга?
Заранее спасибо!

Марина Худякова 10.06.2017 20:18

Решилось просто

function onEdit(event)
{

SmartDataValidation(event);
var sheetName = event.source.getActiveSheet().getSheetName();
var sheet = event.source.getActiveSheet();
var idCol = event.range.getColumn();
var idRow = event.range.getRow();
if (idCol === 13 && sheetName === 'Заказы'){
sheet.getRange(idRow, idCol +8).setValue(new Date().toString());
}

}

oshliaer 13.06.2017 15:26

Марина, обычно приходится делать что-то вроде наблюдателя, который будет обрабатывать все функции, которые подписаны на вызов onEdit()

Например,
function f1(e){
  // ...
}


function f2(e){
  // ...
}

function onEdit(e){
  f1(e);
  f2(e);
}


Т.е. в вашем варианте
function onEdit(event) {
  SmartDataValidation(event);
  onEdit1(event);
}

function onEdit1(event) {
  var sheetName = event.source.getActiveSheet().getSheetName();
  var sheet = event.source.getActiveSheet();
  var idCol = event.range.getColumn();
  var idRow = event.range.getRow();
  if (idCol === 13 && sheetName === 'Заказы') {
    sheet.getRange(idRow, idCol + 8).setValue(new Date().toString());
  }
}


Часовой пояс GMT +3, время: 19:10.