【问题标题】:Get the Newest File in a Google Drive Folder获取 Google Drive 文件夹中的最新文件
【发布时间】:2015-02-04 14:21:00
【问题描述】:

我的 Google App 脚本中有以下几行,但 File API 现在已弃用,我无法更新代码。

原来的几行是:

var folder = DocsList.getFolder('Folder Name');
var file = folder.getFilesByType(DocsList.FileType.SPREADSHEET)[0];
var filename = file.getName(); //and get its name
var fileId = file.getId(); // its ID
var fileurl = file.getUrl(); //and its url
var source = SpreadsheetApp.openById(fileId);`

我需要我的脚本去我驱动器上的一个文件夹,在这个文件夹中获取最新的谷歌电子表格文件并打开它。

【问题讨论】:

    标签: javascript google-apps-script google-drive-api google-sheets deprecated


    【解决方案1】:

    下面是获取文件夹中最新文件的代码:

    function getNewestFileInFolder() {
      var arryFileDates,file,fileDate,files,folder,folders,
          newestDate,newestFileID,objFilesByDate;
    
      folders = DriveApp.getFoldersByName('yourFolderName');  
      arryFileDates = [];
      objFilesByDate = {};
    
      while (folders.hasNext()) {
        folder = folders.next();
    
        files = folder.getFilesByType("application/vnd.google-apps.spreadsheet");
        fileDate = "";
    
        while (files.hasNext()) {//If no files are found then this won't loop
          file = files.next();
          Logger.log('xxxx: file data: ' + file.getLastUpdated());
          Logger.log('xxxx: file name: ' + file.getName());
          Logger.log('xxxx: mime type: ' + file.getMimeType())
          Logger.log(" ");
    
          fileDate = file.getLastUpdated();
          objFilesByDate[fileDate] = file.getId(); //Create an object of file names by file ID
    
          arryFileDates.push(file.getLastUpdated());
        }
    
        if (arryFileDates.length === 0) {//The length is zero so there is nothing
          //to do
          return;
        }
    
        arryFileDates.sort(function(a,b){return b-a});
    
        Logger.log(arryFileDates);
    
        newestDate = arryFileDates[0];
        Logger.log('Newest date is: ' + newestDate);
    
        newestFileID = objFilesByDate[newestDate];
    
        Logger.log('newestFile: ' + newestFileID);
        //return newestFile;
    
        var ss = SpreadsheetApp.openById(newestFileID);
        Logger.log('file name that is now open: ' + ss.getName());
      };
    };
    

    【讨论】:

    • 文件夹中没有文件怎么办?我正在考虑在触发器上使用它来每周检查一次。
    • 在示例中,代码搜索电子表格文件。如果未找到 Google 表格文件,则 hasNext() 方法将为 false,arryFileDates 的长度为零,因为它被实例化为空数组。请参阅更新的代码以测试零长度并在未找到文件时暂停代码。您还可以向数组添加一个值,表示:“Nothing Found”arryFileDates.push("no file found")
    【解决方案2】:

    不用担心,您可以改用DriveApp。请参阅此页面,了解您可以对云端硬盘文件使用的所有可能方法:https://developers.google.com/apps-script/reference/drive/drive-app

    希望有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多