仅在为Google Apps脚本/ Google表格中的特定列设置特定值时,才如何自动连续进行排序?

约翰·T

[我当前的Google表格的工作方式]我有一个表,该表具有按顺序排列的以下标题,并且包含各种数据。

日期,票证ID,票证链接,票证类型,类别,子类别,状态,客户

工作表的外观(某些信息已删除)

[目标]我希望能够将所有状态显示为“已完成”以外的所有行为顶部。并同时使用“日期”列对整个表格进行排序。因此,我希望这是连续的,并希望带有“完成”“状态”的行全部位于具有其余状态的行之下。

[问题是什么]我构建了以下脚本来对数据进行排序,但是存在两个主要问题。

  1. 我不知道每当用户对“状态”列的单元格进行更改时,系统如何对行进行排序。
  2. 我可以使用以下脚本按“日期”和“状态”对数据进行排序,但是状态为“完成”的行在其他状态之间。我想做的是,如果有“状态”为“完成”的行,那么我希望它们位于任何其他状态之下。在状态为“完成”的那些行中,应按“日期”列对它们进行排序。

// Global veriables
var app = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Status");
var dateColumn = 1;
var statusColumn = 7;
var lastRow = app.getLastRow();
var lastColumn = app.getLastColumn();

function dynamicDataSorting() {
  var sortingRange = app.getRange(16, 1, lastRow - 1, lastColumn)
  sortingRange.sort([{column: dateColumn, ascending: false}, {column: statusColumn, ascending: false}]);
}

全精

您非常接近最终解决方案。这就是我的处理方式:

  1. statusAux使用以下公式创建辅助列():=if(C2="finished",0,1)其中columnC是您的statusColumn您可以使用hideColumn(colmun)hideColumns(columnIndex)或从网络中隐藏它
  2. 使用以下函数对数据进行排序:

function onEdit(e)  {
  range.sort([{column: statusAux, ascending: false}, {column: dateColumn, ascending: true}]);
}

您可以定义range函数的内部或外部,它具有相同的效果。

要了解触发器如何工作,请查看简单触发器onEdit(e)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章