- 您要清除工作表中所有不属于
10 值的单元格的内容。
- 您希望使用 Google Apps 脚本实现此目的。
如果我的理解是正确的,那么这个答案呢?请认为这只是几个可能的答案之一。
在这个答案中,我使用了以下流程。
- 检索工作表数据范围内的所有值。
- 检索没有
10 值的单元格范围作为a1Notation。
- 使用
getRangeList清除内容。
修改后的脚本:
function clearRange() {
var activeSheet = SpreadsheetApp.openById("idofmytable").getSheetByName("name");
var columnToLetter = function(column) { // This is from https://stackoverflow.com/a/21231012/7108653
var temp, letter = '';
while (column > 0) {
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
};
// Retrieve all values.
var values = activeSheet.getDataRange().getValues();
// Retrieve the cell range as a1Notation, when the cell value is not 10.
var ranges = values.reduce(function(ar, row, i) {
row.forEach(function(col, j) {if (col != 10) ar.push(columnToLetter(j + 1) + (i + 1))});
return ar;
}, []);
// Clear the content of the retrieved ranges.
activeSheet.getRangeList(ranges).clearContent();
}
参考资料:
如果我误解了您的问题并且这不是您想要的方向,我深表歉意。
补充:
- 您要清除“B9:H35 & K9:Q35”范围内的单元格中的内容,这些内容不是工作表中
10 的值。
示例脚本:
function clearRange() {
var activeSheet = SpreadsheetApp.openById("idofmytable").getSheetByName("name");
var columnToLetter = function(column) { // This is from https://stackoverflow.com/a/21231012/7108653
var temp, letter = '';
while (column > 0) {
temp = (column - 1) % 26;
letter = String.fromCharCode(temp + 65) + letter;
column = (column - temp - 1) / 26;
}
return letter;
};
// Retrieve values from B9:H35 and K9:Q35.
var value1 = activeSheet.getRange('B9:H35').getValues();
var value2 = activeSheet.getRange('K9:Q35').getValues();
// Retrieve the cell range as a1Notation, when the cell value is not 10.
var colOffset1 = 2;
var colOffset2 = 11;
var rowOffset = 9;
var ranges1 = value1.reduce(function(ar, row, i) {
row.forEach(function(col, j) {
if (col != 10) ar.push(columnToLetter(j + colOffset1) + (i + rowOffset))});
return ar;
}, []);
var ranges2 = value2.reduce(function(ar, row, i) {
row.forEach(function(col, j) {
if (col != 10) ar.push(columnToLetter(j + colOffset2) + (i + rowOffset))});
return ar;
}, []);
// Clear the content of the retrieved ranges.
activeSheet.getRangeList(ranges1).clearContent();
activeSheet.getRangeList(ranges2).clearContent();
}