2016-06-04 2 views
1

ребята!Редактор сценария GoogleSheet - событие onEdit с условиями/если оператор

Я новичок на этом сайте, а также не очень хорошо разбираюсь в кодировании. Поэтому я бы очень признателен за помощь.

Сейчас я нуждаюсь в конкретном коде, чтобы сделать работу в Google.

Для дальнейшего объяснения: У меня есть листок Google, на который будут поступать несколько информации другими сотрудниками. Мне нужен код, который будет регистрировать дату в конкретной ячейке и кем был сделан вход в другую ячейку.

До сих пор это то, что у меня есть:

function onEdit(event) { 

    var sheet = event.source.getSheetByName("Input"); 

    // Note: actRng = return the last cell of the row modified 
    var actRng = event.source.getActiveRange(); 
    var index = actRng.getRowIndex(); 
    var cindex = actRng.getColumnIndex(); 

    // Note: date = return date 
    // Note: user = return the user email 
    var userCell = sheet.getRange(index,14); 
    var dateCell = sheet.getRange(index,2); 
    var inputdate = Utilities.formatDate(new Date(), "GMT+0200", "yyyy-MM-dd"); 
    // Note(with hour): var inputdate = Utilities.formatDate(new Date(), "GMT+0200", "yy-MM-dd HH:mm"); 


    //var user = event.user; // Note: event.user will not give you collaborator's Id 
    var user = Session.getEffectiveUser(); 

    // Note: setValue = Insert in the cell the date when this row was modified 
    if (userCell.Value == null) { 
    userCell.setValue(user); 
    dateCell.setValue(inputdate) 
    } 

} 

Мои основные проблемы/вопросы:

  • Я точно не нужен последний модификатор, но человек, который первый входной информации на клетках. Поэтому я попробовал последний IF (Если ячейка, которая должна иметь последнее электронное письмо-модификатор, пуста, это означает, что никто не изменил эту строку раньше, поэтому код должен добавить пользователя в userCell), хотя он не работает так как каждое изменение я делаю, это игнорирует проверку.

  • Я также хочу добавить, что событие произойдет, только если вы добавите значения, если вы их удалите, ничего не произойдет. (до тех пор, даже когда я удаляю ячейки, он считается изменением)

  • Большая часть листа защищена, чтобы избежать случайного удаления некоторых формул, поэтому ячейки, которые изменяют этот код, также защищены. Есть ли способ сделать защиту байпаса кода?

Пожалуйста, помогите мне определить, что я делаю неправильно, и, надеюсь, я получу эту работу отлично! Спасибо за помощь !

ответ

0

Если вы хотите, чтобы предотвратить сценарий от стрельбы, когда клетка будет удалена, попробуйте:

var editedCell = SpreadsheetApp.getActiveSheet().getRange(e.range.getRow(), e.range.getColumn()); 
if (editedCell == "") { 
    return; 
} 

Я хотел бы изменить Session.getEffectiveUser() в session.getActiveUser().

Последнее, если утверждение не является необходимым. Вы хотите, чтобы тот, кто недавно редактировал поле, которое нужно идентифицировать, вместе с датой.

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