gpt4 book ai didi

javascript - driveapp 如何使用谷歌脚本按字母顺序获取文件夹中的文件

转载 作者:行者123 更新时间:2023-11-30 19:45:15 24 4
gpt4 key购买 nike

我从谷歌驱动器的文件夹中获取文件,然后尝试在电子表格中插入指向它们的链接。问题是使用的文件var ezIter = folderez.getFiles();似乎以随机顺序返回。我希望它们按字母顺序排列。这可能吗?

这是我目前的代码。它运行良好,但它链接到文件的顺序乱七八糟,这把一切都搞砸了。

function getFiles() {

var dApp = DriveApp;
var vfolder = dApp.getFoldersByName("video").next();
var yearfolder = vfolder.getFoldersByName("2018").next();
var gamefolder = yearfolder.getFoldersByName("game1").next();
var folderez = gamefolder.getFoldersByName("ez").next();
var ezIter = folderez.getFiles();
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(yearfolder+gamefolder);

var i = 2;

while (ezIter.hasNext()) {
var file = ezIter.next();
var name = file.getName();
var url = file.getUrl();
range = 'AC'+(i);
var filename = 'ezvideo'+(i-1);
var semi = ";";
var hyp = "=hyperlink(\"";
var quot = "\"";
var clos = ")";
var title = hyp + url + quot + semi + quot + filename + quot + clos; // str='=hyperlink("' + f.getUrl() + '","' + f.getName() + '")';
ss.getRange(range).setValue(title);
i++;
}

最佳答案

我不知道这个 API 是如何工作的,但这可能会帮助您对文件进行排序。

首先,完全删除您的 while 循环并粘贴以下内容:

var files = [];

// creates an array of file objects
while (ezIter.hasNext()) {
files.push(ezIter.next());
}

// sorts the files array by file names alphabetically
files = files.sort(function(a, b){
var aName = a.getName().toUpperCase();
var bName = b.getName().toUpperCase();

return aName.localeCompare(bName);
});

files.forEach(function(file){
var name = file.getName();
var url = file.getUrl();
range = 'AC'+(i);
var filename = 'ezvideo'+(i-1);
var semi = ";";
var hyp = "=hyperlink(\"";
var quot = "\"";
var clos = ")";
var title = hyp + url + quot + semi + quot + filename + quot + clos; // str='=hyperlink("' + f.getUrl() + '","' + f.getName() + '")';
ss.getRange(range).setValue(title);
i++;
});

更新:根据tehhowch的优化建议,您可以像这样为每个文件调用一次getName:

var files = [];

// creates an array of file objects
while (ezIter.hasNext()) {
var file = ezIter.next();
files.push({name: file.getName(), url: file.getUrl()});
}

// sorts the files array by file names alphabetically
files = files.sort(function(a, b){
var aName = a.name.toUpperCase();
var bName = b.name.toUpperCase();

return aName.localeCompare(bName);
});

files.forEach(function(file){
var name = file.name;
var url = file.url;
range = 'AC'+(i);
var filename = 'ezvideo'+(i-1);
var semi = ";";
var hyp = "=hyperlink(\"";
var quot = "\"";
var clos = ")";
var title = hyp + url + quot + semi + quot + filename + quot + clos; // str='=hyperlink("' + f.getUrl() + '","' + f.getName() + '")';
ss.getRange(range).setValue(title);
i++;
});

关于javascript - driveapp 如何使用谷歌脚本按字母顺序获取文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55003323/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com