Сценарии Google Sheets onEdit () + проверка флажка - PullRequest
1 голос
/ 05 февраля 2020

Я обнаружил в своем тестировании, что, если в выборку включена проверка данных «Флажок», когда диапазон «удален» (нажатие «Del»), onEdit () параметра * 1003 Атрибут * range будет включать только ячейки с флажками.

Я думал, что функция onEdit может быть вызвана дважды (одна дополнительная для удаления проверки), но, по крайней мере, в моем тестировании это это не тот случай. Он также корректно работает с другими типами проверки данных (ie ListFromARange)

Известно ли это? Можно ли это воспроизвести? Куда мне сообщить об этом, если это действительно проблема?

Электронная таблица для копирования и воспроизведения: https://docs.google.com/spreadsheets/d/11X9JrD70j2pMdb8219gbkx_1nvokSweQSFZvNvRk8Rw/edit?usp=sharing

И эта функция, которая должна быть раскомментирована в копии для воспроизвести:

function onEdit(e) {
  e.source.getSheetByName("Sheet1").getRange(e.range.getRow(),4).setValue(e.range.getA1Notation());
}

Ответы [ 2 ]

1 голос
/ 05 февраля 2020

Похоже, это ошибка!

Как отметил Танаике в своем комментарии, это выглядит непреднамеренным поведением со стороны Apps Script. Независимо от проверки данных, в документации не упоминается, что такого рода поведение должно происходить, если диапазон удаленных ячеек содержит флажки. В результате я позволил себе сообщить об этом в системе отслеживания проблем Google:

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

Надеюсь, это поможет вам!

0 голосов
/ 05 февраля 2020

Попробуйте:

Сделайте свой выбор и измените его слева от столбца 10.

function onEdit(e) {
  var sh=e.range.getSheet();
  for(var i=0;i<e.range.rowEnd-e.range.rowStart+1;i++) { 
    for(var j=0;j<e.range.columnEnd-e.range.columnStart+1;j++) {
      sh.getRange(e.range.rowStart+i,10).setValue(e.range.getA1Notation());
    }
  } 
}

С ним интересно играть.

function onEdit(e) {
  var sh=e.range.getSheet();
  for(var i=0;i<e.range.rowEnd-e.range.rowStart+1;i++) { 
    for(var j=0;j<e.range.columnEnd-e.range.columnStart+1;j++) {
      sh.getRange(e.range.rowStart+i,e.range.columnStart+j).setValue(sh.getRange(e.range.rowStart+i,e.range.columnStart+j).getA1Notation());
    }
  }  
}
...