当前位置: 首页 > 知识库问答 >
问题:

Google应用程序脚本自动(编辑时)排序(仅限特定表格)

汝楷
2023-03-14

我以前在我的工作表上有一个脚本,是基于https://webapps.stackexchange.com/questions/7211/how-can-i-make-some-data-on-a-google-spreadsheet-auto-sorting此选项用于在编辑特定图纸时自动对其排序。然而,我无法确定日期,它似乎已经停止工作了。我已经做了一些研究,显然排序方法在不久前已经改变了。

现在基本上我需要的是以下内容:我有一个谷歌电子表格,有很多不同的表格(20)我过去只有一张需要排序的表格,但随着时间的推移,整个事情都在增长,现在我需要排序的已经是两张了,而且这一数字很可能会进一步增加——而且至关重要的是,排序只适用于这些特定的表格。更复杂的是,工作表的顺序没有固定,因此我无法处理工作表ID,因为它们可能会更改,因此必须处理工作表名称(也可能更改,但不太可能-如果发生这种情况,脚本会很快调整)。

需要排序的工作表包含大约6-7列的大量数据,有一个标题行,应该按第一列排序,最上面的最小数字。

到目前为止,我想出的是以下几点:

function AutoSortOnEdit(){
  // select active sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // select correct sheet
  var sheet = ss.getSheetByName("testsheet456");

  // select range (exclude top row)
  var range = sheet.getRange("A2:ZZ999");

  // actually do the sorting
  range.sort({column: 1, ascending: true});

 Browser.msgBox("sort done"); 
}

消息框就在那里,所以我看到事情被执行,一旦它正常工作,这将被删除。我还添加了一个自定义触发器,用于编辑电子表格。

什么是时髦的是,当我改变range.sort只是(1,真)而不是我现在有什么,它抛出一个错误的方法排序(数字,布尔值)未找到...

但坏消息实际上是:有了这些代码a)我没有收到任何错误b)消息框出现了,所以它实际上贯穿了整个过程,c)当我实际编辑那个东西时它也起作用(这是好的),但是d)没有进行任何排序。。。

有人能帮我吗?我看不出有什么真正的理由不应该这样做(但话说回来,我不是程序员,所以这就是我来这里寻求帮助的原因。:P)。此外,正如引言中所述,我还需要一种方法将该脚本应用于两个(或更多)特定的工作表(按名称),因为它目前只适用于一个工作表,但我想让它首先适用于一个工作表,现在甚至失败了。。。。

提前感谢,,

彼得

共有2个答案

艾雪风
2023-03-14

这也很有效:

function AutoSortOnEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  sheet.getLastColumn());
    ss.sort(1, false);
  });
}
裴焱
2023-03-14

您的范围无效。如果您的工作表中没有地址为ZZ999的单元格,则A2: ZZ999不起作用。您可以通过使用sheet.getLastRow()sheet.getLastColVIII()来使其工作。要对多个工作表进行排序,您需要一个包含所有工作表的数组,然后循环遍历该数组。例如,使用foreach循环。

function AutoSortOnEdit() {
  var sheetNames = ["testsheet456", "testsheet457", "testsheet458"];

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  sheetNames.forEach(function(name) {
    var sheet = ss.getSheetByName(name);
    var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn());
    range.sort({column: 1, ascending: true});
  });
}
 类似资料:
  • 我一直在努力对我的数据进行自动排序(根据第二行第一列数据进行升序),我通过在线搜索找到了一些提示,但遇到了一个错误,似乎我无法通过网络找到答案。 下面是一个场景: 我有两张床单,一张 这是床单 这是第二张 请注意,两张表中的列lastname和code相同,不同之处在于列的性别(在下拉列表中格式化) 我发现一个脚本似乎可以工作,但我不能完全正常工作,下面是我运行脚本后的输出。 注意红色框中的列,似

  • 我正在开发一个GoogleApps脚本电子表格应用程序,我希望该程序具备的能力之一是根据来自两个不同列的数据自动排序一系列表单响应。所以我想按第16列中的数据排序,然后按第1列排序。我可以使用以下方法手动实现此功能:https://drive.googleblog.com/2010/06/tips-tricks-advanced-sorting-rules-in.html 目前我正在运行函数与第一

  • 我有多张表格需要排序,它们需要按不同的列排序。这是我当前正在运行的脚本: 我想添加另一个范围排序列,这样它将首先按第10列排序,然后按第17列排序。我似乎不能让它自动排序2列。任何帮助将不胜感激!

  • 我有一个谷歌表单,在a列中,我需要用无替换按钮上的文本。该列在几个不同的行中具有需要保持不变的标题。我写了以下脚本: 当我尝试运行脚本时,会出现以下错误:数据中的行数与范围中的行数不匹配。数据有1,但范围有2。 我知道这与具有比其他行更多列的行有关,但不确定如何修复代码。

  • 我试图在指定的单元格中自动填充编辑器的名称或电子邮件,而他们在该行中编辑一个值。 为什么因为,如果一张纸被共享N人数和有多个用户将输入数据。在这种情况下,我需要知道谁输入了特定的数据。 我写一个谷歌应用程序脚本,但它在所有工作表。我需要它只在一个名为“购买”的特定工作表中运行。 我的床单会是这样的。

  • 我排序两栏在谷歌表使用脚本。 目前,两列都使用排序函数,我想知道是否可以对第一列使用自定义顺序(在这种情况下['OPEN','YES','NO']) 这里是一个指向示例电子表格的链接