我正在尝试比较两个相同大小的动态表,并且需要扩展提供的代码以覆盖整个表。每次尝试编辑时,都会出现错误,即数据和范围具有两种不同的大小
我对脚本还很陌生,而我对数组的知识充其量只是个粗略的知识。我敢肯定这个问题与此有关。
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行
答案 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);
}