我用这段代码创建了一个复选框菜单,我可以根据文件夹中文档的名称选择项目。但这个菜单总是把最后修改的文件放在前面,而不是按字母顺序创建,即使我的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));
//...