如何识别Google云端硬盘文件夹中的最新文件

时间:2014-09-23 07:40:38

标签: google-apps-script google-drive-api

我在Google云端硬盘中有一个文件夹,通常会从报告工具中转储哪些文件。文件格式为.xls。它们都具有相同的名称,我想识别最新的文件,以便我可以将数据导入到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);
};

2 个答案:

答案 0 :(得分:0)

你离解决方案不是很远......我尝试使用稍微不同的方法:我将所有日期和ID存储在2D数组中,我对数组进行排序并检索第二个维度中的第一个元素(排序后)返回文件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;
};

答案 1 :(得分:0)

上面发布的答案对我没有用,所以我提出了自己的解决方案,该方案有效。

显然(2017年末 )google驱动器会对文件进行排序。所以最后创建的文件是迭代器中的第一个。

这是获取最新文件ID的代码:

 function getLatestFileId(){

   var folder = DriveApp.getFoldersByName("Aff Comm");
   var files = folder.next().getFiles();
   var lastFileId = files.next().getId();


   return lastFileId.toString();

}