Я пытаюсь подсчитать любые изменения, сделанные в диапазоне A:I, и установить значение на листе, однако мой скрипт в настоящее время работает только для редактирования столбцов, а не строк.

Вот сценарий, который я использую:

function onEdit(e) {
    var ss =SpreadsheetApp.getActiveSpreadsheet()
    var s=ss.getActiveSheet()
    var editColumn=e.range.getColumn()
    var editRow = e.range.getRow()
    if(editColumn == 4 && editRow >=2) {
        var sCounter = s.getRange(editRow,editColumn+1,1,1);
        var counter = sCounter.getValue();
        if(counter === 0) {
            counter = 1;
        } else {
            counter ++;
        }
        sCounter.setValue(counter);  
    }
}
1
Callum 28 Окт 2019 в 21:37

1 ответ

Попробуй это:

function onEdit(e) { 
  var sh=e.range.getSheet();
  //e.source.toast('Flag1');
  if(sh.getName()=="Sheet1" && e.range.columnStart<10 && e.range.rowStart>1) {
    //e.source.toast('Flag2');
    if(!PropertiesService.getDocumentProperties().getProperty('EditCounter')) {
      PropertiesService.getDocumentProperties().setProperty('EditCounter', 1);
      //e.source.toast('Flag3');
    }else{
      PropertiesService.getDocumentProperties().setProperty('EditCounter', Number(PropertiesService.getDocumentProperties().getProperty('EditCounter'))+1);
      e.source.toast(PropertiesService.getDocumentProperties().getProperty('EditCounter'));
    }
  }
}

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

function resetEditCounter() {
  var ss=SpreadsheetApp.getActive();
  PropertiesService.getDocumentProperties().setProperty("EditCounter", 0);
  ss.toast(PropertiesService.getDocumentProperties().getProperty('EditCounter'));
}

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

function getEditCounter() {
  var ss=SpreadsheetApp.getActive();
  var html=Utilities.formatString('Edit Counter: %s',PropertiesService.getDocumentProperties().getProperty('EditCounter'));
  var userInterface=HtmlService.createHtmlOutput(html);
  SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Current Edit Counter');
}
1
Cooper 29 Окт 2019 в 06:08