清除多张图纸上的多个范围

Clear multiple ranges across multiple sheets

本文关键字:范围 张图纸 清除      更新时间:2023-09-26

我需要运行一个脚本,该脚本将遍历我的所有工作表(除了最后几张工作表),并清除其中多个范围的内容。

下面的代码可以工作,但速度非常慢,这会导致超时错误。

我已经尽我所能四处寻找如何缩短或加快它。据我所知,它已经很简短了。

我是不是错过了一个技巧?

  function clearranges() {
var ss = SpreadsheetApp.getActive();
var allsheets = ss.getSheets();
for(var i = 0; i < 46; i++){
var sheet=allsheets[i]
 sheet.getRange('D5:AH12').clearContent();
 sheet.getRange('A14:A33').clearContent();
 sheet.getRange('D14:AH33').clearContent();
 sheet.getRange('A9').clearContent();
 sheet.getRange('B5:B12').clearContent();
}
}

解决方案如下:

function clearrangeX() {
  var ss = SpreadsheetApp.getActive();
  var allsheets = ss.getSheets();
  for (var i = 0; i < 46; i++) {
    var sheet = allsheets[i]
    sheet.getRange(9, 1, 1, 1).clearContent();
    sheet.getRange(14, 1, 20, 1).clearContent();
    sheet.getRange(5, 2, 8, 1).clearContent();
    sheet.getRange(5, 4, 8, 31).clearContent();
    sheet.getRange(14, 4, 20, 31).clearContent();
  }
}

代替使用A1表示法,将代码替换为索引行表示法,其中第一个值是要开始的行,第二个值是开始的列,第三个值是需要处理的行数,第四个值是想要处理的列数。

这使运行时间从>360秒变为0.981秒!