如何在具有设定名称的文件夹中列出谷歌驱动器中的所有文件?

2023-12-07

我的驱动器中有一个文件夹,其中包含多个“客户端”文件夹。每个客户端文件夹都具有相同的结构,其中包括一个包含已完成发票(称为“已完成发票”)的文件夹。

folder structure

我需要一种方法来遍历所有名为“Completed Invoices”的文件夹,并在 Google 工作表中列出这些文件夹中的电子表格 ID,以便我稍后可以循环遍历这些文件并从中提取数据。

我发现多个代码源可以工作,但仅在第一级有效 - 即它将列出代理/客户端文件夹中的文件,但不会进入子文件夹。例如。请参阅下面的代码

function listFilesInFolder() {

   var sheet = SpreadsheetApp.getActiveSheet();
   sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]);

    var folder = DriveApp.getFoldersByName("FOLDER ID GOES HERE");
    //Logger.log(folder);
    var contents = folder.getFiles();

    var cnt = 0;
    var file;

    while (contents.hasNext()) {
        var file = contents.next();
        cnt++;

        Logger.log(file);
        Logger.log(cnt);

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

            sheet.appendRow(data);



    };
};

感谢大家的回答,但经过更多搜索后,我找到了答案。对于任何正在寻找类似解决方案的人 - 我找到了一个出色的脚本here它提供了一个非常强大的输出,我想它可以用于各种不同的场景:

/** 
 * Google Apps Script - List all files & folders in a Google Drive folder, & write into a speadsheet.
 *    - Main function 1: List all folders
 *    - Main function 2: List all files & folders
 * 
 * Hint: Set your folder ID first! You may copy the folder ID from the browser's address field. 
 *       The folder ID is everything after the 'folders/' portion of the URL.
 * 
 * @version 1.0
 * @see     https://github.com/mesgarpour
 */

// TODO: Set folder ID
var folderId = 'My folder ID';

// Main function 1: List all folders, & write into the current sheet.
function listFolers(){
  getFolderTree(folderId, false);
};

// Main function 2: List all files & folders, & write into the current sheet.
function listAll(){
  getFolderTree(folderId, true); 
};

// =================
// Get Folder Tree
function getFolderTree(folderId, listAll) {
  try {
    // Get folder by id
    var parentFolder = DriveApp.getFolderById(folderId);

    // Initialise the sheet
    var file, data, sheet = SpreadsheetApp.getActiveSheet();
    sheet.clear();
    sheet.appendRow(["Full Path", "Name", "Date", "URL", "Last Updated", "Description", "Size"]);

    // Get files and folders
    getChildFolders(parentFolder.getName(), parentFolder, data, sheet, listAll);

  } catch (e) {
    Logger.log(e.toString());
  }
};

// Get the list of files and folders and their metadata in recursive mode
function getChildFolders(parentName, parent, data, sheet, listAll) {
  var childFolders = parent.getFolders();

  // List folders inside the folder
  while (childFolders.hasNext()) {
    var childFolder = childFolders.next();
    // Logger.log("Folder Name: " + childFolder.getName());
    data = [ 
      parentName + "/" + childFolder.getName(),
      childFolder.getName(),
      childFolder.getDateCreated(),
      childFolder.getUrl(),
      childFolder.getLastUpdated(),
      childFolder.getDescription(),
      childFolder.getSize()
    ];
    // Write
    sheet.appendRow(data);

    // List files inside the folder
    var files = childFolder.getFiles();
    while (listAll & files.hasNext()) {
      var childFile = files.next();
      // Logger.log("File Name: " + childFile.getName());
      data = [ 
        parentName + "/" + childFolder.getName() + "/" + childFile.getName(),
        childFile.getName(),
        childFile.getDateCreated(),
        childFile.getUrl(),
        childFile.getLastUpdated(),
        childFile.getDescription(),
        childFile.getSize()
      ];
      // Write
      sheet.appendRow(data);
    }

    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);  
  }
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在具有设定名称的文件夹中列出谷歌驱动器中的所有文件? 的相关文章

随机推荐

  • 继承自 itemsControl - 如何更改项目的类型?

    我正在努力改进ListView 这主要与以下方面的变化有关ListViewItem班级 所以我继承了两者 创建了两个服装控件 NestedListView ListView NestedListViewItem ListViewItem 问
  • HDFS 复制 - 数据存储

    我是 hadoop 的相对新手 希望更好地了解复制在 HDFS 中的工作原理 假设我有一个 10 节点系统 每个节点 1 TB 总容量为 10 TB 如果复制因子为 3 则每个文件有 1 个原始副本和 3 个副本 所以 本质上 我的存储中只
  • 如何将文件下载到服务器中的特定路径:Python

    如何通过 http 将文件下载到 jython 或 python 服务器上的本地文件夹 下面的代码可能有效 os chdir path to change to from urllib2 import urlopen f urlopen h
  • 将 ObservableCollection 设置为 ObservableProperty

    我要切换到CommunityToolkit Mvvm源生成器来处理我的视图模型 我对如何处理有点困惑ObservableCollections 我的视图模型如下所示 public partial class MyViewModel Obse
  • 将字符字段更改为日期

    我有一个遗留的 postgres 数据库 其日期列转换为character 50 字段 不要问 我想更改表格和列以包含实际日期 因为这有效 select distinct to date date begin YYYY DD MM from
  • 如何动态实现api版本控制和swagger文档

    我正在 dotnet core api 工作 我必须在 api 上实现版本控制 swagger文档应该按api版本分类 在 Net Core api 版本控制中 可以通过添加来自 nuget 的以下参考来实现 Microsoft AspNe
  • MYSQL 缺少第一行数据[重复]

    这个问题在这里已经有答案了 我编写了一个 PHP 脚本 其中返回餐厅名称 地址 电话号码 营业时间表和自定义菜单的链接 但是 即使数据库中有周一的条目 当我在 mysqli fetch assoc 中执行 while 循环时 它也不会显示
  • Powershell:如何将一个 CSV 中的唯一标头合并到另一个 CSV 中?

    Edit 1 因此 我已经弄清楚如何获取 CSV 2 中的唯一标头以附加到 CSV 1 header table Get Member MemberType NoteProperty Name header add table add Ge
  • MVP 到 MVVM Android

    这里的一个人告诉我 MVVM 比 MVP 更好 他告诉了我很多优点和很多优点 但我想知道我的 MVP 是否做得很好 或者您是否知道任何其他可能转换为 MVVM 的方法 这是使用 Google MVP 登录 我不会放置所有代码 但我会放置文件
  • C# 鼠标悬停时改变表格行颜色

    我的 winform 中有一个表格布局面板 我想在鼠标悬停在一行时向行添加效果 我想我需要在表格上进行 Mouse over 操作 然后检测表格的行号 然后迭代该行上的每个单元格并更改其背景颜色 问题是我不知道如何获取行号 有什么想法吗 E
  • cer、pvk 和 pfx 文件之间有什么区别?

    cer pvk 和 pfx 文件之间有什么区别 另外 我要保留哪些文件以及我应该将哪些文件提供给我的交易对手 Windows 使用 X 509 证书的 cer 扩展名 这些可以是 二进制 ASN 1 DER 也可以使用 Base 64 进行
  • 使用 AccountManagement 扩展类时如何设置二进制属性?

    我正在使用一个自定义类以在 Active Directory 中公开一些自定义架构 我正在存储一个二进制 blob 根据项目要求 该数据必须存储在 AD 中 我不能使用外部存储 如果可以的话我会这样做 当我创建用户时 它可以很好地存储 bl
  • 在一次调用中检索存储库及其标签版本的列表

    我有两个天蓝色的 CLI 查询 az acr repository list 检索我的容器注册表中的存储库列表 az acr repository show tags 检索第一个查询返回的每个存储库的版本标记 这会导致初始调用来检索列表 然
  • 如何从表单中获取 int 而不是 string?

    从表单获取变量
  • 如何通过JavaScript中的正则表达式将camelCase更改为slug-case(或kebab-case)

    因为某些原因 这个答案我发现 据说 如何在 php 中做到这一点只是给了我错误的匹配 它似乎添加了破折号 但也用字符串其余部分的副本替换了大写字母 所以我希望 abcZxc 变成 abc zxc 但它把它变成 abd zxczxc 这 加上
  • 将第三方 js 文件与 TypeScript 结合使用

    我是 typeScript 的新手 我希望能够使用没有定义文件的第三方库 Typescript 是否允许您使用外部库 我尝试使用的库是 filesaver jshttps github com eligrey FileSaver js 我需
  • 使用 Python 以无密码的用户身份登录 Windows

    我这里有一个情况 使用Python 我创建了一个进程 以系统或管理员用户身份运行 并且我需要使用不同的用户名 无需密码 调用应用程序 因此 阅读下面的链接 结论是可能的 使用 Kerberos 模拟另一个没有密码的用户 但我没有找到任何用
  • Crosswalk 从 JavaScript 调用 Java 方法

    我现在正在走人行横道 当用户单击 HTML 中的按钮时 我需要调用 Java 方法 该方法可能如下所示 a href Start a 我不确定是否人行横道延长线就是我想要的 仅仅为了调用Java函数似乎就很重了 有没有更简单的方法来做到这一
  • 在 SQLite 错误中插入多行(错误代码 = 1)

    在 SQLite Android 中执行以下查询时出现错误 sDataBase execSQL query 插入联系人 ID 名字 姓氏 电话号码 电子邮件 ID 状态 值 ae0caa6a 8ff6 d63f 0253 110b20ac2
  • 如何在具有设定名称的文件夹中列出谷歌驱动器中的所有文件?

    我的驱动器中有一个文件夹 其中包含多个 客户端 文件夹 每个客户端文件夹都具有相同的结构 其中包括一个包含已完成发票 称为 已完成发票 的文件夹 我需要一种方法来遍历所有名为 Completed Invoices 的文件夹 并在 Googl