清除多个工作表的多个范围

时间:2015-11-18 11:54:38

标签: javascript google-apps-script google-sheets

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

下面的代码有效,但速度非常慢,导致超时错误。

我尽可能地环顾四周,找出如何缩短或加快速度。据我所知,它已经很简洁了。

我在这里错过了一招吗?

  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();

}
}

1 个答案:

答案 0 :(得分:1)

解决方案如下:

&#13;
&#13;
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();


  }
}
&#13;
&#13;
&#13;

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

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