如何识别Google云端硬盘文件夹中的最新文件
问题描述:
我在Google云端硬盘中有一个文件夹,文件通常从报告工具转储到哪个文件夹中。这些文件采用.xls格式。它们都具有相同的名称,我想识别最新的文件,以便我可以将数据导入到Google工作表中。如何识别Google云端硬盘文件夹中的最新文件
正如您从下面可以看出我是Google Apps脚本的新手。我一直在试图将文件迭代器中的各种文件捕获到一个数组中,以便对结果运行Math.max函数,最终只得到一个值。当然,一旦我确定了最新的日期,我也需要返回与之相关的文件ID - 但我还没有那么远。我可能正朝着完全错误的方向前进,所以任何提示/指导将不胜感激。
function listLatestFile(id) {
var folder = DriveApp.getFoldersByName("GmailAttachments");
var files = DriveApp.getFilesByName('mrp_out.xlsx');
while (files.hasNext()) {
var file = files.next();
var date = (1 - file.getDateCreated());
var datediff = new Array(date);
var datelast = Math.max(datediff);
Logger.log(datelast);
}
//Logger.log(date);
};
答
你是不是从解决方案很远......我试图用一个稍微不同的方法:我存储在一个二维数组的所有日期和ID,我数组进行排序和检索的第一个元素(排序后)在第二维中返回文件ID。
代码:
function listLatestFile() {
var folder = DriveApp.getFoldersByName("GmailAttachments");
var files = DriveApp.getFilesByName('mrp_out.xlsx');
var result = [];
while (files.hasNext()) {
var file = files.next();
result.push([file.getDateCreated(),file.getId()]);
}
Logger.log(result);
var id = result.sort()[0][1];
Logger.log(id);
return id;// return most recent file ID
};
编辑:如果要对排序方法更多的控制,你可以使用更“复杂”之类的方法,象下面这样:
...// same as above
result.sort(function(x,y){
var xp = x[0];// get first element in inner array
var yp = y[0];
return xp == yp ? 0 : xp < yp ? -1 : 1;// choose the sort order
});
var id = result[0][1];
Logger.log(id);
return id;
};
答
的上面贴出的答案对我来说不起作用,所以我想出了我自己的解决方案,它的工作原理。
显然(2017年底)谷歌驱动器排序文件。所以最后创建的文件是迭代器中的第一个。
下面的代码,以获取最新的文件ID:
function getLatestFileId(){
var folder = DriveApp.getFoldersByName("Aff Comm");
var files = folder.next().getFiles();
var lastFileId = files.next().getId();
return lastFileId.toString();
}
非常感谢该哔叽。我很高兴看到我在概念上朝着正确的方向前进(可怜的执行)。 关于如何向现有代码添加一些功能以将最新ID与现有ID进行比较并删除不匹配的ID,您是否有任何想法?我知道如何去摧毁他们,我只是不知道我会怎么做比较。 – 2014-09-24 07:37:25
我会稍后再编辑,现在不行。 – 2014-09-24 08:01:48