【发布时间】:2019-05-31 19:43:40
【问题描述】:
非常感谢 cmets 和响应。那个代码对我来说有点太高级了,我最终找到了一个非常不雅的解决方案,因为我没有时间了。我能够获得列出文件夹和带有链接的第一级子文件夹的代码,但我还不能让它遍历所有级别的文件夹,主要是因为我只需要备份并学习很多基本。我还能够使用我找到的一些代码来列出所有文件夹以创建树,但我无法将其格式化为您可以实际看到结构或添加链接的方式。我会继续尝试,如果我整理出来会发布。这是我使用的,这对我们的目的来说很好,因为我们的共享驱动器相当有限。
作为参考,这是我开始使用的代码: https://superuser.com/questions/1095578/list-of-subfolder-names-and-file-links-in-google-sheets-script
function listFolders(foldername) {
var ss = SpreadsheetApp.openById(ID);
var sheet = ss.getSheetByName("sheet name");
sheet.appendRow("Parent Folder", "Name", "Link" ]);
//change the folder ID below to reflect your folder's ID (look in the
URL when you're in your folder)
var folders = DriveApp.getFolderById(ID);
var contents = folders.getFolders();
var cnt = 0;
var folderD;
while (contents.hasNext()) {
var folderD = contents.next();
cnt++;
data = [
folders.getName(),
folderD.getName(),
folderD.getUrl(),
];
sheet.appendRow(data);
};
};
原帖: 我是在谷歌表格中使用脚本的初学者,我正在尝试在谷歌驱动器中创建一个包含许多子文件夹的文件夹列表。理想情况下,它将是一个树形,但此时我会选择一个列表。我不需要列出所有文件,只需要列出文件夹。我一直在尝试让下面的代码工作,但它在调用电子表格时一直挂断。任何人都可以帮忙吗?
我尝试通过名称和 ID 调用文件夹和电子表格,但它总是告诉我它无法执行 getactivespreadsheet 命令。我也尝试修改另一个问题中提到的代码,但我也无法让它工作:https://ctrlq.org/code/19923-google-drive-files-list
function generateFolderIndex(myfoldername) {
var folder = DriveApp.getFolderById('0B8vOJQUb-IIVTHdudlZSVkdtdE0');
var subFolders = folder.getFolders();
var childFolders = subFolders
var ss = SpreadsheetApp.getActiveSpreadsheet('1Trv9OtJFnD4AdSHrZKFfsSu6JMV9f78H6wwZNhF2_M4');
var sheet = ss.getSheetByName('Directory');
sheet.clear(directory);
sheet.appendRow([name, link]);
while (subFolders.hasNext())
{
var childFolder = childFolders.next();
var foldername = childFolder.getname();
var name = childFolder.getName()
var link = childFolder.getUrl()
var date = childFolder.getDateCreated()
data = [name, link]
sheet.appendRow(data);
}
};
我正在尝试获取一张表,其中列出了带有 URL 链接的文件夹和子文件夹。我目前收到以下错误消息: [19-05-31 15:32:20:911 EDT] 执行失败:找不到方法 getActiveSpreadsheet(string)。 (第 5 行,文件“代码”)[0.432 秒总运行时间]
【问题讨论】:
-
Google 云端硬盘根本不保证是树形结构。 (团队驱动器是)。包含文件夹 A 的文件夹 A 包含文件夹 B?没问题,继续。
-
另外,
appendRow速度非常慢,只有在需要原子行为时才值得这么慢。否则使用getRange和setValues。
标签: google-apps-script directory tree