简体   繁体   English

Google 表格中的自定义排序

[英]Custom Sort in Google Sheets

I was trying to custom sort a list using App Script for Google Sheets, basically I have a list of the months and I want them to appear as January, February, March... in the order of the months.我正在尝试使用 Google 表格的 App Script 自定义排序列表,基本上我有一个月份列表,我希望它们按月份顺序显示为一月、二月、三月……。 This is an example of my list这是我的清单的一个例子

在此处输入图像描述

The code I used in App Script is:我在 App Script 中使用的代码是:

var sheet = SpreadsheetApp.getActive().getSheets()[0];

  var range = sheet.getRange(1,3,sheet.getLastRow(),1);
  var values = range.getValues(); 

  var sortBy = {
    "January": 1,
    "February": 2,
    "March": 3,
    "April": 4,
    "May": 5,
    "June": 6,
    "July": 7,
    "August": 8,
    "September": 9,
    "October": 10,
    "November": 11,
    "December": 12
  };

values.sort(function(a,b){
  return sortBy[[a][0]] - sortBy[[b][0]];
});

How can I connect this code in App Script to my spreadsheet for the months to get sorted.如何将 App Script 中的此代码连接到我的电子表格,以便在几个月内进行排序。

Try:尝试:


values.sort(([a],[b]) => sortBy[a] - sortBy[b]);

range.setValues(values);

Sort Months排序月份

 function sortMonths() {
  const mA = [...Array.from(new Array(12).keys(),x => Utilities.formatDate(new Date(new Date().getFullYear(), x , 1),Session.getScriptTimeZone,"MMMM"))];
  const ss = SpreadsheetApp.getActive();
  const sh = ss.getSheetByName('Sheet1');
  const vs = sh.getRange(1,1,sh.getLastRow()).getValues().sort((a,b) => {
    let vA = mA.indexOf(a[0]);
    let vB = mA.indexOf(b[0]);
    return vA-vB;//swap for descending
  });//Data in column A
  sh.getRange(1,1,vs.length,vs[0].length).setValues(vs);
}

Array.from() 数组.from()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM