我正在将工作表的背景颜色复制到如下所示的数组中:
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Refresh');
var lastRow = sheet.getLastRow();
var sourceStatusColorValues = sheet.getRange(1,11,lastRow,1).getBackgrounds(); //background color from column K (11)
var sourceProjectIDValues = sheet.getRange(1, 1, lastRow, 1).getValues();
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Projects');
var targetProjectIDValues = targetSheet.getRange(1, 1, targetSheet.getLastRow(),1).getValues();
接下来,我将一个工作表的项目 ID 与下一个工作表进行比较,并将背景颜色复制到数组中,以便我可以使用.setBackgrounds()
方法以正确的顺序应用所有背景颜色。
//Compare the projectIDs for Target Sheet with the project IDs in Source Sheet.
//If match then add the background color to the colorValues array
var colorValues = [];
for (var i = 0; i < targetProjectIDValues.length; i++) {
for (var j = 0; j < sourceProjectIDValues.length; j++) {
if (targetProjectIDValues[i] == sourceProjectIDValues[j]) {
colorValues[i] = sourceStatusColorValues[j];
break;
}
}
}
targetSheet.getRange(1, 11, targetSheet.getLastRow(), 1).setBackgrounds(colorValues);
我遇到的问题是copyValues数组中的值都是null
的,而不是背景颜色的十六进制值。
我错过了什么?有人可以帮忙吗?欣赏它!!
试试这个:
function backgrounds(){
var sourceSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
var sourceColors = sourceSheet.getRange(1, 1, sourceSheet.getLastRow(), 1).getBackgrounds();
var sourceData = sourceSheet.getRange(1, 1, sourceSheet.getLastRow(), 1).getValues();
var targetColors = [];
var targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet2');
var targetData = targetSheet.getRange(1, 1, sourceSheet.getLastRow(), 1).getValues();
for (var i = 0; i < sourceData.length; i++){
if (sourceData[i][0] == targetData[i][0])
targetColors.push([sourceColors[i][0]]);
else
targetColors.push(['#FFFFFF']);
}
targetSheet.getRange(1, 1, targetSheet.getLastRow()).setBackgrounds(targetColors);
}
您遇到的问题是getBackgrounds()
(此处的文档(和getValues()
(此处的文档(都返回 2D 数组,并且您将它们视为 1D。我用一张带有一列值的工作表测试了这段代码,将它们与第二张工作表进行比较,它放置了与行匹配的值的相应值。
更新
我修改了代码以改用setBackgrounds()
,它应该更适合处理大型数据集。