我有两张;
在第一个("代码")中,我有一些标签,数字和字符串以及连字符,如AA-01
。
在第二张表中(" places")我列出了不同行和列中的所有标签。
我需要写一个代码给ONCE在表格中接收标签"代码",在表格中找到它"地点"并给它上色。
那应该是像onEdit一样,一旦我擦掉那个标签,我需要第二张纸上的单元格("地点")再次回到白色背景。
所以这就像一个真实的过程;当我在第一张纸上键入标签时,我希望这个过程发生,它在第二张纸上找到值,然后给它上色。
我已经做到了,但不确定为什么不工作!
function color() {
var targetSheet = SpreadsheetApp.getActive().getSheetByName('places');
var sheet = SpreadsheetApp.getActive().getSheetByName('codes');
var ToPlace = sheet.getRange("F13:F300").getValues();
var targetCell = targetSheet.getRange("A1:Z").getValues();
for(var i = 0; i < toPlace.length; i++) {
if( toPlace[i] == targetCell){
targetSheet.setBackground("yellow");
}
}
}
答案 0 :(得分:0)
您目前正在迭代获取字符串数组的代码行 然后,您将这些数组与targetCell进行比较,后者是一个字符串数组数组。
你可以这样做:
function onEdit(e) {
var targetSheet = SpreadsheetApp.getActive().getSheetByName('places');
var targetCells = targetSheet.getRange("A1:Z").getValues();
for (var row = 0; row < targetSheet.getLastRow(); row++) {
for (var col = 0; col < targetSheet.getLastColumn(); col++) {
if (targetCells[row][col] === e.value) {
targetSheet.getRange(row+1, col+1).setBackground("yellow");
return;
} else if (targetCells[row][col] === e.oldValue) {
targetSheet.getRange(row+1, col+1).setBackground("white");
}
}
}
}