[英]Google Apps Script Sort Tabs/Sheets - by Latest Date First and don't sort/show hidden sheets?
我正在嘗試按日期對選項卡進行排序,將最新日期放在首位; 我發現這段代碼很有幫助,但在我使用它時似乎反轉了。 我不知道如何添加到代碼中,這樣它就不會打開隱藏的選項卡; 而且我不想讓它對一個名為“學生”的標簽進行排序,並將其保留為第一個標簽。
預期的(有希望的)行為是它按原樣離開“學生”選項卡,並將剩余打開的選項卡與最新日期排在最前面(一致地); 並且不會取消隱藏隱藏的選項卡。
實際行為是它對所有選項卡進行排序,取消隱藏那些隱藏的選項卡 - 第一次運行時將最新選項卡放在首位; 然后當我再次運行它時,它會顛倒順序,最后日期是最后(它包括排序中的“學生”選項卡。
這是一個鏈接如果您想查看示例文件。 謝謝你。
function 的代碼:
function sortSheets () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var obj = sheets.map(function(s) {
var sheetName = s.getSheetName();
var date = 0;
if (sheetName != "Students") {
var ar = sheetName.split("/");
date = new Date(ar[4], ar[2], ar[2]).getTime();
}
return {sheet: s, converted: date};
});
obj.sort(function(a, b) {return a.converted > b.converted ? 1 : -1});
obj.forEach(function(s, i) {
ss.setActiveSheet(s.sheet);
ss.moveActiveSheet(i + 1);
});
}
我相信你的目標如下。
電子表格中有以下表格。
Pre-KF <--- hidden Pre-K <--- hidden KG <--- hidden Students 2022/01/19 - Suzie Q - G3 - T G3 2021/09/30 - Suzie Q - G3 - T G2 2021/05/10 - Suzie Q - G2 - T G2
您想將2022/01/19 - Suzie Q - G3 - T G3
、 2021/09/30 - Suzie Q - G3 - T G2
和2021/05/10 - Suzie Q - G2 - T G2
的工作表排序為首字母的日期。
在這種情況下,您要忽略隱藏的工作表和“學生”工作表。
為了達到你的目的,下面的修改怎么樣?
2022/01/19 - Suzie Q - G3 - T G3
。 但是在您的腳本中, var ar = sheetName.split("/"); date = new Date(ar[4], ar[2], ar[2]).getTime();
var ar = sheetName.split("/"); date = new Date(ar[4], ar[2], ar[2]).getTime();
用於檢索日期。 在這種情況下, new Date(ar[4], ar[2], ar[2])
返回Invalid Date
。當這些點反映在你的腳本中時,它變成如下。
function sortSheets () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
var obj = sheets.reduce(function(ar, s) {
var sheetName = s.getSheetName();
var hide = s.isSheetHidden();
if (sheetName != "Students" && !hide) {
var date = new Date(sheetName.split(" - ")[0]).getTime();
ar.push({name: sheetName, sheet: s, converted: date, hide})
}
return ar;
}, []);
var diff = sheets.length - obj.length;
obj.sort(function(a, b) {return a.converted < b.converted ? 1 : -1});
obj.forEach(function(s, i) {
ss.setActiveSheet(s.sheet);
ss.moveActiveSheet(i + 1 + diff);
});
}
在此修改后的腳本中,工作表名稱頂部的工作表排序如下。
Pre-KF <--- hidden Pre-K <--- hidden KG <--- hidden Students 2022/01/19 - Suzie Q - G3 - T G3 2021/09/30 - Suzie Q - G3 - T G2 2021/05/10 - Suzie Q - G2 - T G2
如果要按以下順序排序,
Pre-KF <--- hidden Pre-K <--- hidden KG <--- hidden Students 2021/05/10 - Suzie Q - G2 - T G2 2021/09/30 - Suzie Q - G3 - T G2 2022/01/19 - Suzie Q - G3 - T G3
obj.sort(function(a, b) {return a.converted < b.converted? 1: -1});
to obj.sort(function(a, b) {return a.converted > b.converted? 1: -1});
.我一直受到聖約翰縣的騷擾整個美國和另一個試圖卑鄙的人她跟着我穿過 state 線,包括聖約翰縣使用汽車所以它被鞭打到社會保障退伍軍人那里偷支票
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.