在脚本中排序时,我可以指定一个标题行?(Can I specify a header row whe

2019-08-01 02:36发布

我有,我想,我在文档上工作多次受到多个列进行排序电子表格。 这是使用GUI的多步骤过程,并且似乎太费时。 我不得不以检查框的标题行,成立了第一个排序参数,然后再添一个。 唷! 它变老快。

排序表是没有问题的,但标题行也被排序! 我没有发现任何方式指定,我有一个标题行作为参数传递给sort()函数,我也不看什么办法来全局定义()一个标题行,将被排序自动发现。

代替的是,我保存的标题行,删除第一行中,排序的片,在最顶部插入新的行,重新创建标题行,并格式化标题行。 哇! 它没有花这么长时间来写,而且运作良好,但它是非常复杂的!

从用户角度来看,标题行突然出现短暂回升之前就消失了。 这不是太糟糕,但它显然是显而易见的事情是怎么回事。

所以最后我避开我的问题:我忽略承认标题行的存在,当我整理的能力吗? 或者根本排序与目前一个标题行脚本中的表也进行排序标题行,无追索权?

如果我的方法,还是一个喜欢它,需要避免包括在排序过程中的标题行,有没有地方,我可以通知谷歌Apps的团队,让他们可以考虑加入这个功能吗? 由于指定标题行的存在在一个简单的复选框GUI存在,希望它的存在或者可以在脚本中排序时被添加。

编辑

我的原代码(与文档/评论删除):

sheet.deleteRow(1);

rows.sort([<1st col>, <2nd col>]);

sheet.insertRowsBefore(1, 1);
for (var j = 0; j <= (numCols - 1); j++) {
  sheet.getRange(1, (j + 1)).setValue(firstRow[j]);
}

sheet.getRange(1, 1, 1, numCols).setFontWeight("bold");
sheet.getRange(1, 1, 2, numCols).setBorder(true, true, true, true, true, true);

我已经试过在地方上面的代码感谢托马斯的建议:

sheet.setFrozenRows(1);
sheet.sort(<2nd col>);
sheet.sort(<1st col>);
sheet.setFrozenRows(0);

不幸的是,这只是通过排序列,而不是一行。 更换2 sheet.sort(); 与调用rows.short(); 在第一个代码块行不行。 尝试这导致我在评论报告的初始问题,其中标题行与其他数据一起排序,即使第一行的排序之前冻结。

此外,除非另一行代码被添加下面这个我在电子表格的顶部得到一个永久的“工作...”通知。 它似乎并没有什么影响,但是。

在所有情况下, var sheet = SpreadsheetApp.getActiveSheet();var rows = sheet.getDataRange();firstRow是标题行数据阵列。

Answer 1:

在所有情况下,无功片= SpreadsheetApp.getActiveSheet(); VAR行= sheet.getDataRange(),和FIRSTROW是标题行数据阵列。

而不是使用getDataRange(),你可以得到你想要的排序(即,不包括标题行)的范围内:

var sheet = SpreadsheetApp.getActiveSheet();
var rows = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());

这接下来的部分是一个答案/观察到一个“次要”问题:

剧本完成后,标题行与所有其他行进行排序沿着虽然第一排被冻结。

我认为这是GAS有点限制,其中有些“表格工具”的方法没有发挥好彼此- 这个问题是不一样的你的,但我认为这(种)有关。

所以,用“冻结标题”的解决方法,我很想看看SpreadsheetApp.flush(); 刚刚之后插入sheet.setFrozenRows(1); 使得它的工作。



Answer 2:

要做到这一点:

  • 创建电子表格
  • 把一些随机数据
  • 冻结第一行, http://support.google.com/docs/bin/answer.py?hl=en&answer=54813

然后调用这个脚本:

function myFunction() {
  SpreadsheetApp.getActiveSpreadsheet().getActiveSheet().sort(1);
}

还有你去:)

亲切的问候,

托马斯·范·比尔



文章来源: Can I specify a header row when sorting in a script?