我不是专业人士,但我的电子表格需要这个Google脚本。我正在寻找拼图来构建我的代码。最后它工作但很慢。有人能帮我吗?我可以在慢动作中看到代码是如何工作的。 : - (
我的电子表格或工作表有很多条目,但有些行是空的(超过1000行)。使用过滤功能,我可以非常快速地隐藏这些行,只需几秒钟。我不是电子表格的用户而只是创作者。普通用户真的不是专家,使用过滤功能是他们的挑战。我以为我可以将脚本中的所有步骤组合在一起,并使其可以通过按钮使用。一部分是隐藏空行。
脚本在N列检查是否有1或0.如果有0,则该行应隐藏。该脚本从第7行开始到1150年。隐藏一行需要每秒一秒!这真的很慢。如果我的代码是垃圾,是否可以通过脚本激活过滤器功能?
function hideRows() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
ss.setActiveSheet(ss.getSheetByName("Order"));
var sheet = SpreadsheetApp.getActiveSheet();
var column = 14;
var cell = 0;
var lastRow = SpreadsheetApp.getActiveSheet().getLastRow();
for (var row = 7; row < lastRow; row++) {
cell = sheet.getRange(row, column).getValues();
if (cell == 0){
sheet.hideRows(row);
}
else {
sheet.showRows(row);
}
}
}
答案 0 :(得分:0)
试试这个:
function hideRows()
{
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('Sheet1').activate();
var rg=sh.getDataRange();
var vA=rg.getValues();
for (var i=6;i<vA.length-1;i++)//vA.length-1 stops before last row i=6 is row 7
{
if (vA[i][13] == 0)
{
sh.hideRows(i+1);
}
else
{
sh.showRows(i+1);
}
}
}
数组索引比行数和列数少一个,所以你必须保持这一直,但你一次得到所有数据然后循环运行得快得多,因为你读取数组而不是必须访问每个值的电子表格。
答案 1 :(得分:0)
getValues()
方法返回一个2D数组,因此您应该使用getValue()
代替,它将返回您定位的单元格的内容。我重写了你发布的片段以获得更好的语法/格式,因为通过2D数组递增要比递增单元格/范围快得多:
function hideRows() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Order"); //get sheet
var nRows = sheet.getLastRow() - 7; //# of rows to search
var values = sheet.getRange(7, 14, nRows, 1).getValues(); //Get 2D array of values [[],[],...]
//increment through the full index range of values (0-7)
for (var i in values) {
if (values[i][0] == 0) sheet.hideRows(i+7); //i+7 is the rowIndex (7-14)
else sheet.showRows(i+7);
}
}
那应该完成你想要做的事情。如果您有任何问题或疑问,请告诉我。