我有一个带有两个电子表格的 Google Workbook。在第一个电子表格中,人们将向 B 列添加各种 ID,我想确保 B 列中的 ID 包含在第二个工作表的 A 列中包含的有效 ID 列表中。
如果第一个工作表的 B 列中的 ID 无效,则将整行涂成红色。
这是我当前的工作代码,但它运行缓慢——我认为是因为第二个电子表格(~5400)上有很多有效的 ID。另外,如果删除了一行,我想取消该行的颜色。
有没有更好的方法来做到这一点:
function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var s = ss.getActiveSheet();
var r = s.getActiveCell();
var activeRange = s.getActiveRange();
var changeRange = s.getRange(activeRange.getRow(),1,1,s.getLastColumn());
if (r.getColumn() == 2 && r.getValue() == "") {
changeRange.setBackground("none");
}
if (r.getColumn() == 2 && findRow(r.getValue()) !=1) {
changeRange.setBackground("red");
}
}
function findRow(item) {;// the actual search function
var resultArray = []
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet=ss.getSheets()[1];
var values = sheet.getRange("A:A").getValues();
for(cc =0; cc < values.length; ++cc) {
if(values[cc].toString().match(item)){
return 1;
}
}
}