Счетчик скриптов Google для правок - PullRequest
1 голос
/ 28 октября 2019

Я пытаюсь подсчитать любые изменения, сделанные в диапазоне 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 Ответ

1 голос
/ 28 октября 2019

Попробуйте:

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');
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...