如何创建按字母顺序排列文件名的复选框菜单



我用这段代码创建了一个复选框菜单,我可以根据文件夹中文档的名称选择项目。但这个菜单总是把最后修改的文件放在前面,而不是按字母顺序创建,即使我的Google帐户Drive中的文件是按字母顺序排列的。有没有办法让这些文件按字母顺序显示?

function showList(folderID) {
  var folder = DocsList.getFolderById(folderID);
  var files = folder.getFiles();
  var arrayList = [];
  for (var file in files) {
    file = files[file];
    var thesesName = file.getName();
    var thesesId = file.getId();
    var thesesDoc = DocumentApp.openById(thesesId);
    for (var child = 0; child < thesesDoc.getNumChildren(); child++){
    var thesesFirstParagraph = thesesDoc.getChild(child);
    var thesesType = thesesFirstParagraph.getText();
      if (thesesType != ''){
        var newArray = [thesesName, thesesType, thesesId];
        arrayList.push(newArray);
        break;
         }
      }
   }
   (...)
    panel.add(app.createHidden('checkbox_total', arrayList.length)); 
    for(var i = 0; i < arrayList.length; i++){
      var checkbox = app.createCheckBox().setName('checkbox_isChecked_'+i).setText(arrayList[i][0]);
      panel.add(checkbox);
   }
   var handler = app.createServerHandler('submit').addCallbackElement(panel);
   panel.add(app.createButton('Submit', handler));
   var scroll = app.createScrollPanel().setPixelSize(500, 400);
   scroll.add(panel);
   app.add(scroll);
   mydoc.show(app);

正如您所注意到的,屏幕中的排序顺序与API返回的顺序无关,它们是单独的事情。

你可以很容易地把你的arrayList上的文件按字母顺序排序。例如

  for (var file in files) {
    //...
        break;
      }
    }
  }
  arrayList.sort(); //after you finish, before you create the checkbox list
  panel.add(app.createHidden('checkbox_total', arrayList.length)); 
  //... 

最新更新