【问题标题】:Google script to get folder names within a parent folder谷歌脚本来获取父文件夹中的文件夹名称
【发布时间】:2018-05-28 08:21:59
【问题描述】:

我需要获取指定文件夹中文件夹的名称和 URL。

这是我的尝试:

// set the folder to pull folder names from
var DDparentid = "IDhere";
var DDparent = DriveApp.getFolderById(DDparentid);
var DDfolders = DDparent.getFolders();

// iterate through folders in the folder
while (DDfolders.hasNext()) {
    var folder = DDfolders.next();

    // get folder name
    Logger.log(folder.getName());

    var DDnames = folder.getName();

    // get the url       
    Logger.log(folder.getUrl());

    var DDURLs = folder.getUrl();
}

这适用于获取文件 URL,但我相信文件夹的处理方式不同,getfolder 的使用方式也不同。我收到一条错误消息,指出某个字符串不适合 DriveApp.getfolder()。我应该如何使用 getfolder?

已编辑:这会运行,但实际上并没有提取 URL 或文件夹名称。两个变量都未定义,但没有错误。

【问题讨论】:

  • 您确定您使用的文件夹 ID 正确吗?
  • 它有效,错误在于此处未描述的另一部分代码。感谢您的帮助。

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


【解决方案1】:

你可以试试这个:

var parentFolderId = "xxxxxxxIDxxxxxxx";
var parentFolder = DriveApp.getFolderById(parentFolderId);
var folders = parentFolder.getFolders();
var folder;
// iterate through folders in the folders fetched from parent folder
while (folders.hasNext()) {
    folder = folders.next();
    // get folder name
    Logger.log(folder.getName());
    // get the url       
    Logger.log(folder.getUrl());
}

这是一个未经测试的代码,如果出现任何问题,请告诉我,我很乐意帮助我们。

谢谢

【讨论】:

  • 它运行,但由于某种原因,没有记录 URL 和文件夹名称。我设置的等于 folder.getname() 和 folder.getUrl() 的变量是未定义的,从这些变量构建的数组也是未定义的。所以我实际上并没有提取名称或 URL。
  • 它适用于文件没有问题,但似乎不适用于文件夹?
  • Umair,您的原始代码对我有用。也许您遇到了缓存或延迟问题。另外 - 我见过一些奇怪的事情,比如 Logger.log(folder.getUrl()) 不起作用,但是如果你把它分成两行,比如 x=folder.getUrl();记录器.log(x); - 然后它会工作。不知道为什么。
  • 抱歉各位,回复晚了。我已经测试了我的代码,它似乎对我来说工作正常。如果您能告诉我更多关于您对此的期望或您想要实现的目标的细节,那么我可能会为你们提供更多帮助。
【解决方案2】:

下面列出了指定文件夹的所有子文件夹名称和 URL:

function listSubFoldersInFolder(id) {
  var dfolder = DriveApp.getFolderById('ENTER_PARENT_FOLDER_ID_HERE');
  var contents = dfolder.getFolders();
  var file;
  var name;
  var sheet = SpreadsheetApp.getActiveSheet();
  var link;

  sheet.clear();
  sheet.appendRow(["Name", "Link"]);


  while(contents.hasNext()) {
    file = contents.next();
    name = file.getName();
    link = file.getUrl();
    data = [name, link]
    sheet.appendRow(data);
  }
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-26
    相关资源
    最近更新 更多