1

我正在处理一段代码,以便在按每行“偏移”列中的值分组的排序后的Google表单中创建命名范围。我正在寻找一种更有效的方式来选择这些范围。以下是我目前有的,任何意见,表示赞赏!如何优化Google表格脚本选择和创建命名范围?

function nameRanges (input, sheet, ss, offset){ 
var maxrows = sheet.getMaxRows() 
var numRows = input.getNumRows(); 
sheet.deleteRows(numRows+1, maxrows-numRows); 
var sheetname = sheet.getName() 
var numCol = input.getNumColumns(); 

for (var j = 2, x=2, y=3; i <=numRows -1, j <=numRows, x <=numRows ; x++, y++){ 
    var jvalue = sheet.getRange(j,offset).getValue(); 
    var xvalue = sheet.getRange(x,offset).getValue(); 
    var yvalue = sheet.getRange(y,offset).getValue(); 
    var start = j 

    if (xvalue != yvalue){ 
       var rangesize = sheet.getRange(j, 1, (y-j) , numCol); 
     Logger.log("New NamedRange "+sheetname + jvalue +" created from "+ start + " to " +y); 
     ss.setNamedRange (sheetname + jvalue, rangesize); 
     rangesize.setBorder(true, true, true, true, false, false, "black", SpreadsheetApp.BorderStyle.SOLID) 
     j=y 
    }} 
    } 

回答

1

我会建议你不要在for循环中声明你的变量。一开始就在外面宣布它们。对于Apps脚本,还有几个Best practices,这些脚本太长而无法在此处发布。