Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting Google应用程序脚本自动(编辑时)排序(仅限特定表格)_Sorting_Google Apps Script - Fatal编程技术网

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

Sorting Google应用程序脚本自动(编辑时)排序(仅限特定表格),sorting,google-apps-script,Sorting,Google Apps Script,我曾经为我的工作表编写了一个脚本,它基于这个脚本,在编辑特定工作表时自动对其进行排序。然而,我无法确定日期,它似乎已经停止工作了。我已经做了一些研究,显然排序方法在不久前已经改变了 现在基本上我需要的是以下内容:我有一个谷歌电子表格,有很多不同的表格20+我过去只有一张需要排序的表格,但随着时间的推移,整个事情都在发展,现在我需要排序的已经是两张了,而且这一数字很可能会进一步增加——而且至关重要的是,排序只适用于这些特定的表格。更复杂的是,表单的顺序没有固定,所以我无法处理表单ID,因为它们可能

我曾经为我的工作表编写了一个脚本,它基于这个脚本,在编辑特定工作表时自动对其进行排序。然而,我无法确定日期,它似乎已经停止工作了。我已经做了一些研究,显然排序方法在不久前已经改变了

现在基本上我需要的是以下内容:我有一个谷歌电子表格,有很多不同的表格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时,它抛出一个错误方法sortnumber,boolean not found

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

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

提前感谢,

彼得你的射程无效。A2:如果工作表中没有地址为ZZ999的单元格,则ZZ999不起作用。您可以使用sheet.getLastRow和sheet.getLastColumn使其工作。要对多个工作表进行排序,需要一个包含所有工作表的数组,然后循环遍历该数组。例如,使用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});
  });
}

这也很有效:

function AutoSortOnEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  sheet.getLastColumn());
    ss.sort(1, false);
  });
}

var sheet=ss.GetSheetByNameFormResponse;sheet.sort1,假;这也很有效:var sheet=ss.getsheetbynameformresponse;sheet.sort1,假;