我正试图让这个函数在Apps脚本中工作,但对于我的生活,我似乎找不到问题。
我在工作表的一列中突出显示了一系列单元格。我想删除这些单元格中的所有内容,而不是删除行。
到目前为止我写的是:
function clearGreen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var bgColors = range.getBackgrounds();
for (var i=0; i<bgColors.length; i++) {
for (var j=0; j<bgColors[i].length; j++) {
if (bgColors[i][j] === '#D9E9D3') {
range.getCell(i+1,j+1).clearContent();
}
}
}
}
调试时返回的错误如下:
TypeError: Cannot read property 'getSheets' of null
clearGreen @ Code.gs:4
更新:下面的解决方案工作完美,比我的代码快得多。注意:你的工作表需要是你的工作簿中的第一个工作表,我的工作表是59,所以一旦我把它移动到第一个位置,它就会完美地执行。
谢谢!
尝试更改行:
if (bgColors[i][j] === '#D9E9D3') {
:
if (bgColors[i][j].toUpperCase() === '#D9E9D3') {
这样做会更快:
function clearGreen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var range = sheet.getDataRange();
var bgColors = range.getBackgrounds();
var data = range.getValues() // <--- get all the data as an array
for (var i=0; i<bgColors.length; i++) {
for (var j=0; j<bgColors[i].length; j++) {
if (bgColors[i][j].toUpperCase() === '#D9E9D3') {
data[i][j] = ''; // <--- change the array
}
}
}
range.setValues(data); // <--- put the array back on the sheet
}