【问题标题】:Sorting Results of listFilesByName in Google Sheet ScriptGoogle Sheet 脚本中 listFilesByName 的排序结果
【发布时间】:2016-04-29 14:04:17
【问题描述】:

我正在 Google 表格中创建一个标签来跟踪特定文件夹中的文件。我已经成功修改了我在网上找到的脚本以按文件夹 ID 获取列表,但我似乎无法弄清楚如何让结果按名称顺序显示。这是我正在使用的代码,但我将文件夹 ID 放在 myFolderId 的位置:

 /**
 * List all files in Google Drive folder.
 *
 * @param {string} folderName    (optional) Name of folder on Google Drive
 *
 * Adapted from:
 * http://ctrlq.org/code/19854-list-files-in-google-drive-folder
 * https://gist.github.com/hubgit/3755293
 */
function listFilesInFolder(id) {
  // If we have not been provided a folderName, assume we will interact with     user.
  var interactive = (typeof folderName === 'undefined');

  // Get name of folder to list
  if (interactive) {
    id = 'myFolderId';
  }

  if (id === '')
    return;  // No name provided, exit quietly

  var folder = DriveApp.getFolderById(id);
  var contents = folder.getFiles();

  var file, data, sheet = SpreadsheetApp.getActiveSheet();
  sheet.clear();

  sheet.appendRow(["Name", "Date"]);

  // Loop over files in folder, using file iterator
  while (contents.hasNext()) {
    file = contents.next();

    if (file.getMimeType() == MimeType.GOOGLE_SHEETS) { // "SPREADSHEET"
      // Skip displaying spreadsheets - I don't know why...
      continue;
    }

    data = [ 
      file.getName(),
      file.getDateCreated(),
    ];

    sheet.appendRow(data);
  }
}

【问题讨论】:

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


    【解决方案1】:

    第一个选项,排序工作表

    第二个选项,我尝试评论脚本,以便您了解步骤

    /*
     * Logs in a SpreadSheet the files of a given folder
      * @param {string} folder id
     */
    
    function listFilesInFolder(id){
      // You can change it and get ss from a given ID
      var sheet = SpreadsheetApp.getActiveSheet();
    
      // array to hold our data
      var data = [];
    
      // An iterator that allows scripts to iterate over a potentially large collection of files
      var files = DriveApp.getFolderById(id).getFiles();
    
      // We loop on iterator and append results to an array
      while (files.hasNext()) {
       var file = files.next();
       // we append our data with result, we have now an array of files
       data.push(file);
      }
    
      // lets sort our array
      data = data.sort(function(file1, file2){
          if (file1.getName().toLowerCase() < file2.getName().toLowerCase())
              return -1;
          else if (file1.getName().toLowerCase() > file2.getName().toLowerCase())
              return 1;
          else 
            return 0;
        }
      )
    
      // lets add it to our sheet
      // some labels
      sheet.appendRow(["Name", "Date"]);
      // real data
      data.forEach(function(file){
        sheet.appendRow([file.getName(), file.getDateCreated()])
      })
    }
    

    gist link

    【讨论】:

    • 谢谢。我目前只是在将结果放入工作表后对其进行排序。我只是想要一个更优雅的解决方案来消除额外的步骤。你的解决方案对我来说很有意义(很好的评论,谢谢),所以一旦我有机会在这个小项目上工作,我会尽快尝试。再次感谢。
    【解决方案2】:

    在末尾添加这一行

    //for sorting the Name column    
    sheet.sort(1); 
    

    【讨论】:

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