Sorting 如何在GoogleApps脚本中按日期按时间顺序对电子表格中的工作表进行排序
我正在尝试按时间顺序对电子表格中的表格进行排序。它们都是相同格式的日期(MM dd yyyy),但我不确定如何在排序时将它们视为日期,或者这是否是最好的方法 我目前已经复制了按字母顺序排序的代码,这使得MM dd部分的顺序通常是正确的,但年份不符合顺序Sorting 如何在GoogleApps脚本中按日期按时间顺序对电子表格中的工作表进行排序,sorting,google-apps-script,google-sheets,Sorting,Google Apps Script,Google Sheets,我正在尝试按时间顺序对电子表格中的表格进行排序。它们都是相同格式的日期(MM dd yyyy),但我不确定如何在排序时将它们视为日期,或者这是否是最好的方法 我目前已经复制了按字母顺序排序的代码,这使得MM dd部分的顺序通常是正确的,但年份不符合顺序 function sortSheets () { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheetNameArray = []; var sheets = ss.get
function sortSheets () {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheetNameArray = [];
var sheets = ss.getSheets();
for (var i = 0; i < sheets.length; i++) {
sheetNameArray.push(sheets[i].getName());
}
sheetNameArray.sort();
for( var j = 0; j < sheets.length; j++ ) {
ss.setActiveSheet(ss.getSheetByName(sheetNameArray[j]));
ss.moveActiveSheet(j + 1);
}
ss.setActiveSheet(ss.getSheetByName("GUI"));
ss.moveActiveSheet(1);
}
函数排序表(){
var ss=SpreadsheetApp.getActiveSpreadsheet();
var sheetNameArray=[];
var sheets=ss.getSheets();
对于(变量i=0;i
这就是我的代码目前的样子,但它只是按字母顺序排列,而不是按时间顺序排序。我希望收到的结果将是标签按顺序排列,1个是“GUI”,2个从最早日期到最晚日期排序。- 您需要在电子表格中对工作表进行排序
- 图纸名称的格式为
MM dd yyyy
- 有一个工作表名为
GUI
- 有多张图纸的图纸名称为
MM dd yyyy
- 您要按如下方式对这些表进行排序。
- 第一张是
。GUI
的表格从最早日期到最晚日期MM dd yyyy
- 第一张是
- 对象包括图纸对象和从
转换为unix时间的值MM dd yyyy
MM dd yyyy
。那是MM/dd/yyyy
。在这种情况下,请修改上述脚本如下
发件人:
致:
- 您需要在电子表格中对工作表进行排序
- 图纸名称的格式为
MM dd yyyy
- 有一个工作表名为
GUI
- 有多张图纸的图纸名称为
MM dd yyyy
- 您要按如下方式对这些表进行排序。
- 第一张是
。GUI
的表格从最早日期到最晚日期MM dd yyyy
- 第一张是
- 对象包括图纸对象和从
转换为unix时间的值MM dd yyyy
MM dd yyyy
。那是MM/dd/yyyy
。在这种情况下,请修改上述脚本如下
发件人:
致:
感谢您的调查,我相信您理解我的问题,您的解决方案听起来很合理,但奇怪的是,它似乎将MM dd作为一年中的优先事项。@sorry8yourpi感谢您的回答。给您带来不便,我深表歉意。我想确认一下你的情况。因此,您可以提供用于复制您的问题的示例电子表格。因为在我的环境中,我可以确认当工作表名称使用
MM dd yyyy
格式时,排序工作正常。当然,请删除您的个人信息。当然,这里有一份工作表:@sorry8yourpi感谢您提供电子表格示例。我更新了我的答案。你能确认一下吗?如果仍然不起作用,你能提供你使用的脚本吗?通过这一点,我想确认一下。这非常有效,很抱歉我的格式错误,我完全忽略了它。再次感谢您的持续帮助。感谢您调查此事,我相信您理解我的问题,您的解决方案听起来很合理,但奇怪的是,它似乎将MM dd作为一年中的优先事项。@sorry8yourpi感谢您的回复。给您带来不便,我深表歉意。我想确认一下你的情况。因此,您可以提供用于复制您的问题的示例电子表格。因为在我的环境中,我可以确认当工作表名称使用MM dd yyyy
格式时,排序工作正常。当然,请删除您的个人信息。当然,这里有一份工作表:@sorry8yourpi感谢您提供电子表格示例。我更新了我的答案。你能确认一下吗?如果仍然不起作用,你能提供你使用的脚本吗?通过这一点,我想确认一下。这非常有效,很抱歉我的格式错误,我完全忽略了它。再次感谢您的持续帮助。
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 != "GUI") {
var ar = sheetName.split("-");
date = new Date(ar[2], ar[0], ar[1]).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);
});
}
var ar = sheetName.split("-");
var ar = sheetName.split("/");