Редактировать скрипт для включения функции изменения цвета ячейки при изменении текста - PullRequest
0 голосов
/ 12 января 2019

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

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

Для этого конкретного проекта изменение определяется добавлением в документ (новые строки текста) И изменениями существующих данных (существующие строки изменяют текст).

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

    // create menu buttons
    function onOpen() {
        var ss = SpreadsheetApp.getActiveSpreadsheet();
        var menuEntries = [{
            name: "Sync Spreadsheet Data",
            functionName: "copyDataToWorkingSpreadsheet"
        }];
        ss.addMenu("Data Update Functions", menuEntries);
    };

    // copy data from form sheet to live mapping sheet
    function copyDataToWorkingSpreadsheet() {

      // source doc
      var sss = SpreadsheetApp.openById('Source Doc');

      // source sheet
      var ss = sss.getSheetByName('teams');

      // source sheet
      var ss = sss.getSheetByName('players');

      // Get full range of data
      var SRange = ss.getDataRange();

      // get A1 notation identifying the range
      var A1Range = SRange.getA1Notation();

      // get the data values in range
      var SData = SRange.getValues();

      // target spreadsheet
      var tss = SpreadsheetApp.openById('Target Doc');

      // target sheet
      var ts = tss.getSheetByName('teams');

      // target sheet
      var ts = tss.getSheetByName('players'); 

      // set the target range to the values of the source data
      ts.getRange(A1Range).setValues(SData);

    };

Сейчас скрипт работает так, как мне нужно. Любая помощь в реализации изменения цвета очень ценится!

1 Ответ

0 голосов
/ 12 января 2019

Что-то вроде этого, вероятно, будет работать для вас.

function trackChanges(e) {
  var rg=e.range;
  var sh=rg.getSheet();
  if(sh.getName()=='players'){
    var row=e.range.rowStart;
    var col=e.range.columnStart;
    sh.getRange(row,col).setBackground('#ffff00');//yellow highlight changes
  }
}

Обратите внимание: вы не можете запустить такую ​​функцию из редактора сценариев или из меню (без указания obj события, как описано здесь ).

...