我們使用 Google 表格進行音樂會制作。模板選項卡用作給定音樂會的模板。ALL SHOWS 選項卡用作摘要。每次計劃新的音樂會時,我們都會復制 TEMPLATE 并根據音樂會日期(例如 01/01、04/12)對其進行命名,然后我們將其沿標簽欄移動到適當的位置。
中間音樂會標簽是 MONTHS 標簽(例如 1 月、2 月)
在使用 App Script 進行了一些調整后,我想知道是否有人對我如何根據自定義順序自動沿標簽欄自動排序新創建的音樂會標簽有一個聰明的見解。
我們的自定義排序順序如下所示:
幫手(留在原地)
模板(留在原處)
所有音樂會(留在原地)
一月
01/01
02/01
[...]
31/01
二月
01/02
02/02
[...]
28/02
行進
01/03
[...]
HOLIDAYS(偶爾的標簽也應該留在原處)
非常感謝您的寶貴時間!
R
uj5u.com熱心網友回復:
要進行排序,請使用 moveActiSheet(請參閱參考資料)。
這里的目的是用每個選項卡的名稱和日期構建一個陣列,如下所示
- 2022-MM-dd 用于標簽為 xx/yy
- 2022-MM-00 用于標簽為 MMMM
- z 為他人
并根據每行的第二個值排序
嘗試
function reOrderTabs() {
var ss = SpreadsheetApp.getActiveSpreadsheet()
const tabs = ss.getSheets().map(sh => sh.getName())
const monthes = listOfMonthes()
var list = []
tabs.forEach(t => {
try {
if (monthes.indexOf(t) == -1) {
list.push([t, '2022-' t.split('/')[1] '-' t.split('/')[0]])
}
else {
list.push([
t,
Utilities.formatDate(new Date('2022/' (monthes.indexOf(t) 1) '/' 15), Session.getScriptTimeZone(), "yyyy-MM") '-00'
])
}
}
catch (e) { list.push([t, 'z']) }
})
list = list.sort(function (a, b) {
return ('' a[1]).localeCompare(b[1]);
})
list.forEach((t, i) => {
ss.setActiveSheet(ss.getSheetByName(t[0]));
ss.moveActiveSheet(i 1)
})
}
function listOfMonthes() {
return [...Array.from(Array(12).keys(), x => Utilities.formatDate(new Date(2022, x, 15), Session.getScriptTimeZone(), "MMMM").toUpperCase())]
}

參考

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/481098.html
