Directory 列出文件夹、子文件夹和文件的Google脚本

Directory 列出文件夹、子文件夹和文件的Google脚本,directory,google-drive-api,Directory,Google Drive Api,我有一个google脚本,列出了google驱动器文件夹(包括子文件夹)的FolderName、FolderID、文件名和文件ID。 但是,在第一行中,我需要文件的完整路径,而不是foldername 例如,名为abc.pdf的文件位于/documents/files/new/abc.pdf文件夹中 我的脚本显示的是foldernamenew而不是完整的文件夹路径/documents/files/new/ 我终于做到了!!! 此脚本按预期工作,将创建一个列表,其中包含Google Drive文件

我有一个google脚本,列出了google驱动器文件夹(包括子文件夹)的FolderName、FolderID、文件名和文件ID。 但是,在第一行中,我需要文件的完整路径,而不是foldername

例如,名为abc.pdf的文件位于/documents/files/new/abc.pdf文件夹中

我的脚本显示的是foldernamenew而不是完整的文件夹路径/documents/files/new/

我终于做到了!!! 此脚本按预期工作,将创建一个列表,其中包含Google Drive文件夹中包含的所有文件夹和文件的FolderName、FolderID、Filename和FileID:

    var folderId = 'FOLDERIDGOESHERE'; //Replace the folder id with the folder id of the parent folder in the Google Drive, where you would like to start sorting through the drive. 


// Main function 1: List all folders, & write into the current sheet.
function listFolders(){
  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", "Folder ID", "FileName"]);

    // 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.getId()


    ];
    // 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(),
        childFolder.getId(),
        childFile.getName(),
        childFile.getId()

      ];
      // Write
      sheet.appendRow(data);
    }

    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);  
  }
};    

这些信息对你的情况有用吗?可以是。。。但我不知道如何使用:(谢谢你的回复。很抱歉,我的评论对你的情况没有帮助。
    var folderId = 'FOLDERIDGOESHERE'; //Replace the folder id with the folder id of the parent folder in the Google Drive, where you would like to start sorting through the drive. 


// Main function 1: List all folders, & write into the current sheet.
function listFolders(){
  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", "Folder ID", "FileName"]);

    // 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.getId()


    ];
    // 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(),
        childFolder.getId(),
        childFile.getName(),
        childFile.getId()

      ];
      // Write
      sheet.appendRow(data);
    }

    // Recursive call of the subfolder
    getChildFolders(parentName + "/" + childFolder.getName(), childFolder, data, sheet, listAll);  
  }
};