我有这种代码安静,我用它创建一个复选框菜单,我可以根据文件夹中文档的名称选择它。 但是,此菜单始终首先使用上次修改的文件创建,而不是按字母顺序创建,即使我的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);
答案 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));
//...