首页 > 解决方案 > 如何对多个自动谷歌表进行排序

问题描述

初学者尝试使用脚本,请帮助!

我需要一种方法来自动对同一工作簿中不同工作表上的多个列进行排序。我正在使用的当前脚本仅对一张纸进行排序。

const SHEET_NAME = "History";
const SORT_DATA_RANGE = "A2:Y";
const SORT_ORDER = [
{column: 25, ascending: true},
{column: 17, ascending: true}, 
{column: 1, ascending: true}
];

function HistorySort(e){
  multiSortColumns();
}

function multiSortColumns(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName(SHEET_NAME);
  var range = sheet.getRange(SORT_DATA_RANGE + sheet.getLastRow()); // change here
  range.sort(SORT_ORDER);
  ss.toast('Sort complete.');
}

标签: sortinggoogle-apps-scriptgoogle-sheets

解决方案


这是一种遍历所有这些并排序的方法。但是,如果要排序的列在每个工作表中都不同,则必须在每个工作表上指定。

//SHEET_NAME = "History";
var SORT_DATA_RANGE = "A2:Y";
var SORT_ORDER = [
{column: 25, ascending: true},
{column: 17, ascending: true}, 
{column: 1, ascending: true}
];

function sortAllSheets() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var allSheets = ss.getSheets();
  allSheets.forEach(multiSortColumns);
  ss.toast('Sort complete.');
}


function multiSortColumns(sheet){
  //you could put some exceptions in here for sheets you might want to skip
  var range = sheet.getRange(SORT_DATA_RANGE + sheet.getLastRow()); // change here
  range.sort(SORT_ORDER);
}

推荐阅读