展开提供的代码以覆盖整个表格

时间:2019-07-18 16:44:00

标签: google-apps-script google-sheets

我正在尝试比较两个相同大小的动态表,并且需要扩展提供的代码以覆盖整个表。每次尝试编辑时,都会出现错误,即数据和范围具有两种不同的大小

我对脚本还很陌生,而我对数组的知识充其量只是个粗略的知识。我敢肯定这个问题与此有关。

function compareTEST() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet1 = ss.getSheetByName('FIRST');
  var values1 = sheet1.getRange('b3:e8').getValues()[0];            
  var ss2 = SpreadsheetApp.openById('1csTKgthrUpZoYMf-d-8y54h9N-tecsNZftLoaOF8u-s');
  var sheet2 = ss2.getSheetByName('SECOND');
  var values2 = sheet2.getRange('b3:e8').getValues()[0];            
  var lastRow = sheet1.getLastRow();
  var backgrounds = []; 
  Logger.log(values1)
  Logger.log(values2)
  Logger.log(backgrounds)
  for (var k = 1; k < values1.length; k++) {
backgrounds.push(values2[k] == values1[k] ? 'light orange 1' : 'cyan');
  }
  sheet1.getRange('b3:e8').setBackgrounds([backgrounds]);
}

我已经获得仅执行一行的功能,但是我的表有4列和6行

1 个答案:

答案 0 :(得分:0)

尝试一下:

function compareTEST1(r) {
  var r=r||'b3:e8';
  var ss=SpreadsheetApp.getActive();
  var sh1=ss.getSheetByName('FIRST');
  var rg1=sh1.getRange(r);
  var ss2=SpreadsheetApp.openById('1csTKgthrUpZoYMf-d-8y54h9N-tecsNZftLoaOF8u-s');
  var sh2=ss2.getSheetByName('SECOND');
  var rg2=sh2.getRange(r);
  var values1=rg1.getValues();            
  var values2=rg2.getValues();            
  var bgs=rg1.getBackgrounds(); //using background array for the loop now
  for(var i=0;i<bgs.length;i++) {
    for(var j=0;j<bgs[i].length;j++) {
      if(values1[i][j]!=values2[i][j]) {
        bgs[i][j]='#ffff00';
      }
    }
  }
  rg1.setBackgrounds(bgs);//changes the backgrounds of both sheets
  rg2.setBackgrounds(bgs);
}