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

谷歌应用程序脚本自动排序编辑

东门航
2023-03-14

我一直在努力对我的数据进行自动排序(根据第二行第一列数据进行升序),我通过在线搜索找到了一些提示,但遇到了一个错误,似乎我无法通过网络找到答案。

下面是一个场景:

我有两张床单,一张

这是床单

这是第二张

请注意,两张表中的列lastname和code相同,不同之处在于列的性别(在下拉列表中格式化)

我发现一个脚本似乎可以工作,但我不能完全正常工作,下面是我运行脚本后的输出。

注意红色框中的列,似乎性别和bdate没有遵循自动排序。

这是我的密码:

function autosortOnEdit() {
var sheetNames = ["Sheet1", "Sheet2"];
var ss = SpreadsheetApp.getActiveSpreadsheet();
sheetNames.forEach(function(name) {
var sheet = ss.getSheetByName(name);
var range = sheet.getRange(2, 1, sheet.getLastRow() - 1, sheet.getLastColumn() -1);
range.sort({column: 1, ascending: true});
});
}

我的观察是,我认为这个脚本不适用于上面示例中格式化的单元格。

我想根据列A“姓氏”自动排序。

如何使此脚本即使在格式化的单元格上也能工作?

提前感谢,我会继续通过网络搜索。

共有1个答案

夹谷弘亮
2023-03-14

不确定如何使用范围。排序({列:1,升序:true}) 或它是如何工作的,但每当我想对工作表值排序时,我都会执行以下操作:

function myFunction() 
{
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  var rows = sheet.getLastRow();
  var columns = sheet.getLastColumn();

  var sortedValues = sheet.getRange(2, 1, rows-1, columns).getValues().sort();

  sheet.getRange(2, 1, rows-1, columns).setValues(sortedValues);
}

请尝试使用此代码,而不是您的代码,希望这有助于我在测试时成功地对所有值进行排序。

编辑

要将相同的方法应用于电子表格中的所有工作表,您可以获取工作表名称并逐个循环。检查代码:

function myFunction() 
{
  var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var currentSheetName, currentSheet;

  for(var i=0; i<sheets.length; i++)
  {
    currentSheetName = sheets[i].getName();

    currentSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(currentSheetName);
    var rows = currentSheet.getLastRow();
    var columns = currentSheet.getLastColumn();

    var sortedValues = currentSheet.getRange(2, 1, rows-1, columns).getValues().sort();

    currentSheet.getRange(2, 1, rows-1, columns).setValues(sortedValues);
  }    
}

 类似资料:
  • 在继续使用GoogleApps脚本构建Google电子表格的过程中,我已经完成了获取Bittrex和Poloniex余额的工作,但无法使用Cryptopia。 下面是我与Bittrex将JSON对象数组映射到字符串的斗争的链接 以下是官方API链接:https://www.cryptopia.co.nz/Forum/Thread/256 以下是一些例子: https://www.cryptopia

  • 使用谷歌应用脚本Gmail库,当我使用函数,API似乎将过去的一个段落拆分为多个段落,可能会使用字符限制。例如,我的电子邮件中有一段写道: 但当我在电子邮件中调用此功能时,它变成: 而且,当我在一个新的行定界符上拆分电子邮件文本,并进行一些清理,以使用我的输出创建一个数组时,我最终得到: 我查看了这篇Reddit帖子,它似乎处理了类似的问题。但是,我尝试了提出问题的人提出的解决方案: 但它并没有满

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

  • 我使用一个简单的脚本来删除1天后所有标有“摄像头”的电子邮件。这已经奏效好几个月了。我没有改变它,但它突然停止工作。 该脚本仍有在我的Gmail上运行的权限,但已停止。 感谢任何建议。 脚本是; 谢了山姆

  • 在谷歌工作表上,尝试根据特定单元格中的值隐藏/取消隐藏行,并尝试在AppsScript中为此编写脚本。发现一个隔离工作(如果B55=NO,则隐藏64行): 但我需要对多个单元格和多行使用相同的方法,只要我展开它,就只有代码的最后一部分有效,而不是第一部分: 从这里开始,B121号牢房开始工作,但我的B55停止工作。有什么提示吗?谢谢!

  • 我正在用Google Apps脚本编写一个JavaScript工具来检查文档的一些属性,比如“所有链接是否有效”、“权限设置是否正确”等等。我正在使用中记录的APIhttps://developers.google.com/apps-script/reference/drive/drive-app通过ID查找文件,检查它们的权限,在GoogleDrive中找到它们,等等,但是我发现“共享驱动器”与