Google表格脚本:在电子表格中按字母顺序对表格进行排序 [英] Google Sheets Script: Sort sheets alphabetically within a spreadsheet

查看:109
本文介绍了Google表格脚本:在电子表格中按字母顺序对表格进行排序的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我遇到了一个旧的帮助表格,其中共享了脚本使用javascript在电子表格中整理工作表.脚本如下:

I came across an old help form where a script is shared to organize sheets within a spreadsheet using javascript. The script is as follows:

function copyAllSheetsToAnotherSpreadsheetInAlphabeticalOrder() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceName = ss.getName();
  var sourceSheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();
  var targetName = "Sheets alphabetized - Copy of " + sourceName;
  var sheetNumber, sourceSheet, sheetName;
  var sheetAlphaArray = new Array();

  // create a new empty target spreadsheet
  var targetSpreadsheet = SpreadsheetApp.create(targetName);
  var targetUrl = targetSpreadsheet.getUrl();

  // iterate through all sheets in the source spreadsheet to collect their names and numbers
  for( sheetNumber = 0; sheetNumber < sourceSheets.length; sheetNumber++) {
    sheetAlphaArray[sheetNumber] = new Array(2);
    sheetName = sourceSheets[sheetNumber].getName();
    // we will sort the array by the sheet name so it needs to be the first element
    sheetAlphaArray[sheetNumber][0] = sheetName;
    // need to keep track of sheet numbers so that we can find the sheets
    // in alphabetical order from the sourceSheets array, place it in the second element
    sheetAlphaArray[sheetNumber][1] = sheetNumber;
  }

  // sort the sheet names array in ascending alphabetic order
  sheetAlphaArray.sort();

  // iterate through all sheets in the source spreadsheet by sheet name in alphabetic order
  //
  // new sheets are always added to the first position, so the sheets need to be added
  // last sheet first, first sheet last, otherwise they would appear in reverse order
  for( sheetNumber = sourceSheets.length - 1; sheetNumber >= 0; sheetNumber-- ) {

    // copy next sheet in reverse alphabetical order from the source spreadsheet to target spreadsheet
    sourceSheet = sourceSheets[ (sheetAlphaArray[sheetNumber][1]) ];
    sourceSheet.copyTo(targetSpreadsheet);
  }

  // done, tell user where to find the new spreadsheet
  Browser.msgBox("Spreadsheet copied with sheets in alphabetical order. " +
                 "Target name: " + targetName + ". " +
                 "Target URL: " + targetUrl ) + ".";
}

运行脚本后,似乎已按字母顺序对几页进行了排序,但在滚动浏览已排序的页面后,有一堆尚未排序.前15个已排序,其次是21个未排序.

After running the script several pages seem to be sorted in alphabetical order but after scrolling through the sorted pages there are a bunch which haven't been sorted. The first 15 are sorted followed by 21 unsorted.

推荐答案

我意识到问题出在JavaScript的.sort()函数与小写字母区别对待的大写单词上.所以我修改了:

I realized that the problem was related to JavaScript's .sort() function treating capitalized words differently from lowercase. So I modified:

sheetName = sourceSheets[sheetNumber].getName();

成为:

sheetName = sourceSheets[sheetNumber].getName().toLowerCase();

进行此更改后,新排序的电子表格似乎可以使所有内容井然有序.

After making this change the new sorted spreadsheet seemed to have everything in order.

这篇关于Google表格脚本:在电子表格中按字母顺序对表格进行排序的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆