编辑脚本以包含在文本更改时更改单元格颜色的功能

时间:2019-01-11 21:47:09

标签: google-apps-script google-sheets triggers gs-conditional-formatting

我正在管理团队花名册的主文档。当前,我有此脚本,用于将其他名册文档中的更改添加到主名册文档中。我想指出对带有彩色单元格的主文档所做的任何更改。

母版表运行脚本以将数据从源doc(其他花名册doc)同步到目标doc(主花名册doc)。我要这样做,以便对主文档所做的任何更改都突出显示(更改的单元格背景色)。

对于此特定项目,更改是通过在文档中添加(文本的新行)和更改现有数据(更改文本的现有行)来定义的。

我不确定如何实现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 :(得分:0)

类似的事情可能对您有用。

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
  }
}

请注意:您无法从脚本编辑器或菜单运行这样的功能(不提供here中所述的事件obj)。