【问题标题】:Get a List of Drive Files Into a Google Sheet将驱动器文件列表获取到 Google 表格中
【发布时间】:2020-10-15 05:51:33
【问题描述】:
  var folder = DriveApp.getFolderById('1_gA4D7dfybJ60IdfgsnqdfdsgVoo9D76fgsdgf9cqmAnJI7g7');
  var contents = folder.getFiles();
  var file;
  var name;
  var sheet = SpreadsheetApp.getActiveSheet();
  var date;
  var size;

  sheet.clear();
  sheet.appendRow(["Nome", "Data", "Dimensione"]);

  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    date = file.getDateCreated();
    size = file.getSize();
    id = file.getUrl();

    data = [name, date, size,id]
    sheet.appendRow(data);
  }
};

每次清除所有数据后,从头开始添加数据。

sheet.clear();sheet.appendRow(["Nome", "Data", "Dimensione"]);

有什么方法可以检查数据吗?
如果相同的数据已经存在,则该函数不适用于该行。

如果添加了新记录,也应该添加,但函数不会从一个重新开始。

如果我的文件夹中有 20 个 PDF,并在文件夹中再添加一个 PDF,则添加函数 21 pdf,并且不要从头开始运行该函数。

【问题讨论】:

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


    【解决方案1】:

    解释:

    以下脚本背后的逻辑如下:

    1. 我们获得了当前位于工作表 D 列中的所有文件的URLs。这些是迄今为止已被记录的文件的URLs。我们可以放心地假设URLs 始终是唯一的:

      const aURLs = sheet.getRange('D2:D'+sheet.getLastRow()).getValues().flat();
      
    1. 第二步是像原始脚本一样遍历文件并检查文件的URL 是否在aURLs 中。如果文件URL 不在aURLs 中或换句话说在D 列中,则将其添加到newFiles 数组中:

      if(!uNames.includes(name)){
       newFiles.push(data);
       }
      
    2. 检查完所有文件后,我们可以在最后一行工作表之后添加新文件:

    sheet.getRange(sheet.getLastRow()+1,1,newFiles.length,newFiles[0].length).setValues(newFiles);


    解决办法:

    仅第一次在文件中手动添加标题:

    然后每次都执行脚本:

    function myFunction() {
      const folder = DriveApp.getFolderById('1_gA4D7dfybJ60IdfgsnqdfdsgVoo9D76fgsdgf9cqmAnJI7g7');
      const contents = folder.getFiles();
      const sheet = SpreadsheetApp.getActiveSheet();
      const aURLs = sheet.getRange('D2:D'+sheet.getLastRow()).getValues().flat();
      
      const newFiles = [];
      
      while(contents.hasNext()) {
        let file = contents.next();
        let name = file.getName();
        let date = file.getDateCreated();
        let size = file.getSize();
        let id = file.getUrl();
        let data = [name, date, size,id]
        if(!aURLs.includes(id)){
        newFiles.push(data);
        }
      }
      sheet.getRange(sheet.getLastRow()+1,1,newFiles.length,newFiles[0].length).setValues(newFiles);
    }
    

    【讨论】:

      猜你喜欢
      • 2022-12-18
      • 2022-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-21
      • 1970-01-01
      • 2010-10-24
      相关资源
      最近更新 更多