问题:
我看到过类似的问题和解决方案,但只能让我的脚本在电子表格文件的第一张纸上运行。我已经将代码从只应用于特定的工作表中进行了调整,但也许我在做这件事时遗漏了一些东西。。
代码:
/**
* Sets background color to strikethrough-formatted cells
*/
function set_color_strikethrough(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (i=0; i<sheets.length; i++) {
var sheet = ss.getSheets()[i]; // current sheet
var sheetName = sheet.getName();
console.log("sheetname: ", sheetName);
var lr = sheet.getLastRow()
var lc = sheet.getLastColumn()
var range = sheet.getRange(2,1,lr,lc);
var results = range.getFontLines();
for (var i=0;i<lr;i++) {
for (var j=0;j<lc;j++ ) {
if(results[i][j] == "line-through"){
var color = sheet.getRange(i+2,1,1,lc).setBackground("orange")
}
}
}
}
}
更新(解决方案(:
感谢@Tanaike指出i
计数器变量被滥用,这是一个被忽视的简单错误。工作代码:
/**
* Sets background color to strikethrough-formatted cells
*/
function set_color_strikethrough(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (k=0; k<sheets.length; k++) {
var sheet = sheets[k]; // current sheet
var lr = sheet.getLastRow()
var lc = sheet.getLastColumn()
var range = sheet.getRange(2,1,lr,lc);
var results = range.getFontLines();
for (var i=0;i<lr;i++) {
for (var j=0;j<lc;j++ ) {
if(results[i][j] == "line-through"){
var color = sheet.getRange(i+2,1,1,lc).setBackground("orange")
}
}
}
}
}
我想修改如下。
修改要点:
- 在脚本中,使用
i
变量的for循环在使用i
的for循环中使用。循环的第一个i
被循环的第二个改变。这样一来,使用i
的循环就不会像您预期的那样正常工作。我认为这就是你问题的原因 - 可以将CCD_ 6修改为CCD_。通过这种方式,可以稍微降低工艺成本
修改的脚本:
当您的脚本被修改时,它变成如下。
function set_color_strikethrough(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
for (k=0; k<sheets.length; k++) { // <--- Modified
var sheet = sheets[k]; // <--- Modified
var sheetName = sheet.getName();
console.log("sheetname: ", sheetName);
var lr = sheet.getLastRow()
var lc = sheet.getLastColumn()
var range = sheet.getRange(2,1,lr,lc);
var results = range.getFontLines();
for (var i=0;i<lr;i++) {
for (var j=0;j<lc;j++ ) {
if(results[i][j] == "line-through"){
var color = sheet.getRange(i+2,1,1,lc).setBackground("orange")
}
}
}
}
}