如何按字母顺序创建一个包含文件名的复选框菜单?

时间:2014-05-23 23:46:49

标签: google-apps-script

我有这种代码安静,我用它创建一个复选框菜单,我可以根据文件夹中文档的名称选择它。 但是,此菜单始终首先使用上次修改的文件创建,而不是按字母顺序创建,即使我的Google帐户云端硬盘中的文件按字母顺序显示也是如此。有没有办法让这些文件按字母顺序显示?

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);

1 个答案:

答案 0 :(得分:1)

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

填写完成后,您可以在arrayList上按字母顺序对文件进行排序。 e.g。

  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)); 
  //...