Udemy 课程上的这个Google 电子表格大约有 50 张,每种编程语言一张,而且表格是随机排序的,因此很难找到特定的表格。
手动对工作表进行排序需要一段时间,但我们可以使用Google Apps 脚本轻松地自动执行该过程,并轻松浏览大型电子表格。
使用 Google Apps 脚本自动进行工作表排序
以下代码片段将自动按字母数字顺序对 Google 表格中的工作表进行排序。该脚本可以根据工作表名称按升序或降序排列工作表。
要开始使用,请转至扩展 > Apps 脚本以打开脚本编辑器。然后,复制并粘贴以下代码:
const sortGoogleSheets = ( ascending = true ) => { const options = { sensitivity : 'base' , ignorePunctuation : true , numeric : true , } ; const compareFn = ( sheet1 , sheet2 ) => { return ascending ? sheet1 . getName ( ) . localeCompare ( sheet2 . getName ( ) , undefined , options ) : sheet2 . getName ( ) . localeCompare ( sheet1 . getName ( ) , undefined , options ) ; } ; // Get the active spreadsheet. const ss = SpreadsheetApp . getActiveSpreadsheet ( ) ; ss . getSheets ( ) . sort ( compareFn ) . reverse ( ) . forEach ( ( sheet ) => { ss . setActiveSheet ( sheet ) ; ss . moveActiveSheet ( 1 ) ; } ) ; // Flush the changes to the spreadsheet. SpreadsheetApp . flush ( ) ; } ;
compareFn
函数比较两个工作表并返回一个值,该值指示第一个工作表应该在第二个工作表之前还是之后。该函数返回以下值:
-
-1
如果第一张纸应该出现在第二张纸之前。 -
1
如果第一张纸应该在第二张纸之后。
高级排序选项
const options = { sensitivity : 'base' , ignorePunctuation : true , numeric : true , } ;
options
对象指定区域设置比较的选项。以下是一些需要了解的重要事项:
-
numeric 属性指定是否应将数字视为数字而不是字符串。如果此属性设置为 false,“Sheet1”和“Sheet10”将排在“Sheet2”之前。
-
ignorePunctuation 属性指定在比较过程中是否应忽略空格、括号和其他标点符号。如果此属性设置为 false,“Sheet 1”和“Sheet1”将被视为不同的工作表。
-
敏感度属性指定比较应该区分大小写还是不区分大小写。将此属性设置为“accent”以区别对待基本字母和重音字符(工作表 a 和工作表 à 将被视为不同的工作表)。
按日期对 Google 表格进行排序
如果您的工作表名称包含日期,例如“2023 年 3 月”或“23 年 1 月 3 日”,您需要先将日期转换为数字,然后再进行比较。
const compareFn = ( sheet1 , sheet2 ) => { return ascending ? new Date ( sheet1 . getName ( ) ) . getTime ( ) - new Date ( sheet2 . getName ( ) ) . getTime ( ) : new Date ( sheet2 . getName ( ) ) . getTime ( ) - new Date ( sheet1 . getName ( ) ) . getTime ( ) ; } ;
参考
原文: https://www.labnol.org/sort-sheets-in-google-spreadsheet-230512