Javascript 如何在电子表格文件中的所有工作表上运行Google Apps脚本?

Javascript 如何在电子表格文件中的所有工作表上运行Google Apps脚本?,javascript,google-apps-script,google-sheets,Javascript,Google Apps Script,Google Sheets,问题: 我见过类似的问题和解决方案,但只能让脚本在电子表格文件的第一页上运行。我已经修改了代码,使其仅适用于特定的工作表,但可能我在这样做时遗漏了一些东西 守则: /** * Sets background color to strikethrough-formatted cells */ function set_color_strikethrough(){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheets =

问题

我见过类似的问题和解决方案,但只能让脚本在电子表格文件的第一页上运行。我已经修改了代码,使其仅适用于特定的工作表,但可能我在这样做时遗漏了一些东西

守则:

/** 
 * 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")
        }
      }
    }
  }
}

我想修改如下

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")
        }
      }
    }
  }
}
修改点:
  • 在脚本中,使用变量
    i
    的for循环在使用
    i
    的for循环中使用<第一个for循环处的code>i由第二个for循环更改。这样,使用
    i
    的循环就不能正常工作。我想这就是你的问题所在
  • var sheet=ss.getSheets()[i]可修改为
    var sheet=sheets[i]。这样可以稍微降低工艺成本
修改脚本: 当您的脚本被修改时,它将变成如下所示

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")
        }
      }
    }
  }
}
函数集\u颜色\u删除线(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheets=ss.getSheets();

对于(k=0;kCan我可以问你关于你的问题吗?1.你的标题是
我在我的电子表格文件中的所有工作表上运行谷歌应用程序脚本
。你的问题是
我已经修改了只在特定工作表上应用的代码
。我可以问你关于你的目标吗?2.我可以问你关于脚本的问题吗?我正在运行脚本,但它只是一个问题在我的电子表格文件的第一张图纸上应用。我的目标是将其应用于文档中的所有图纸。您的标题错了,
我该怎么做…
起到了很大的作用。:)感谢您的回复。我为我糟糕的英语技能深表歉意。我可以问一下
我已经将代码从仅应用于特定工作表中改为与您的脚本之间的关系吗?别担心,我很高兴得到帮助。:)原始代码在这里: