Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 如何在GoogleApps脚本中按日期按时间顺序对电子表格中的工作表进行排序_Sorting_Google Apps Script_Google Sheets - Fatal编程技术网

Sorting 如何在GoogleApps脚本中按日期按时间顺序对电子表格中的工作表进行排序

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

我正在尝试按时间顺序对电子表格中的表格进行排序。它们都是相同格式的日期(MM dd yyyy),但我不确定如何在排序时将它们视为日期,或者这是否是最好的方法

我目前已经复制了按字母顺序排序的代码,这使得MM dd部分的顺序通常是正确的,但年份不符合顺序

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
      的表格从最早日期到最晚日期
如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个

在这次修改中,我使用了以下流程

  • 检索所有工作表
  • 创建用于排序的对象数组。
    • 对象包括图纸对象和从
      MM dd yyyy
      转换为unix时间的值
  • 使用转换后的值对对象数组进行排序
  • 使用已排序的数组重新排列图纸
  • 修改脚本: 参考资料:
    如果我误解了你的问题,而这不是你想要的结果,我道歉

    编辑: 从共享电子表格中,发现工作表名称的格式不是
    MM dd yyyy
    。那是
    MM/dd/yyyy
    。在这种情况下,请修改上述脚本如下

    发件人: 致:
    • 您需要在电子表格中对工作表进行排序
    • 图纸名称的格式为
      MM dd yyyy
    • 有一个工作表名为
      GUI
    • 有多张图纸的图纸名称为
      MM dd yyyy
    • 您要按如下方式对这些表进行排序。
      • 第一张是
        GUI
        MM dd yyyy
        的表格从最早日期到最晚日期
    如果我的理解是正确的,这次修改怎么样?请把这看作是几个答案中的一个

    在这次修改中,我使用了以下流程

  • 检索所有工作表
  • 创建用于排序的对象数组。
    • 对象包括图纸对象和从
      MM dd yyyy
      转换为unix时间的值
  • 使用转换后的值对对象数组进行排序
  • 使用已排序的数组重新排列图纸
  • 修改脚本: 参考资料:
    如果我误解了你的问题,而这不是你想要的结果,我道歉

    编辑: 从共享电子表格中,发现工作表名称的格式不是
    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("/");