2015-11-18 29 views
0

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

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

我环顾四周,我可以找出如何缩短或加快。据我有限的知识,它已经非常简短。

我在这里错过了一招吗?

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

的解决方案如下:

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秒!