我是在Google表格中使用脚本的初学者,我正在尝试在Google驱动器中创建包含许多子文件夹的文件夹列表。理想情况下,它将是树形形式,但此时我要准备一份清单。我不需要列出所有文件,只需列出文件夹。我一直在尝试使下面的代码正常工作,但是它一直挂在调用电子表格上。有人可以帮忙吗?
我曾尝试通过名称和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秒]
答案 0 :(得分:2)
或者..简单的方法...
在PC的台式机上使用DRIVE或FS DRIVE APP。使用CMD(窗口)...和功能
树> a.txt
生成的文件a.txt将显示所有树。
它可以节省大量的研究时间。
答案 1 :(得分:0)
SpreadsheetApp.getActiveSpreadsheet()
没有任何参数。
但是
SpreadsheetApp.openById('ssid')
确实需要和id。我认为您可能打算使用openById();
这是我目前正在使用的脚本,但它会生成电子表格列表,您可以按ID排除文件夹,按ID排除文件。
function getAllSpreadsheets() {
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('FilesAndFolders');
if(sh.getLastRow()>0) {
sh.getRange(1,1,sh.getLastRow(),2).clear().clearDataValidations();
}
getFnF();
SpreadsheetApp.getUi().alert('Process Complete')
}
var level=0;
function getFnF(folder) {
var folder= folder || DriveApp.getRootFolder();
//var folder=DriveApp.getRootFolder();
var ss=SpreadsheetApp.getActive();
var sh=ss.getSheetByName('FilesAndFolders');
var files=folder.getFilesByType(MimeType.GOOGLE_SHEETS)
while(files.hasNext()) {
var file=files.next();
if(isExcluded(file.getId(),'file')){continue;}
var firg=sh.getRange(sh.getLastRow() + 1,level + 1);
firg.setValue(Utilities.formatString('=HYPERLINK("%s","%s")',file.getUrl(),'FILE: ' + file.getName()));
firg.offset(0,1).insertCheckboxes('Exclude','Include');
}
var subfolders=folder.getFolders()
while(subfolders.hasNext()) {
var subfolder=subfolders.next();
if(isExcluded(subfolder.getId(),'folder')){continue;}
var forg=sh.getRange(sh.getLastRow() + 1,level + 1);
forg.setValue(Utilities.formatString('=HYPERLINK("%s","%s")',subfolder.getUrl(),'FOLDER: ' + subfolder.getName()));
//forg.offset(0,1).insertCheckboxes('Exclude','Include');
//level++;
getFnF(subfolder);
}
//level--;
}
function isExcluded(id,type) {//type: file or folder
var type=type||'Missing Input';
var xFldrIdA=['Excluded folder ids'];
var xFileIdA=['Excluded file ids'];
var type=type.toLowerCase();
switch(type) {
case 'file':
return xFileIdA.indexOf(id)>-1;
break;
case 'folder':
return xFldrIdA.indexOf(id)>-1;
break;
default:
throw(Utilities.formatString('Error: Invalid Type: %s in isExcluded.',type));
return true;//assume excluded
break;
}
}
欢迎您使用它,也许会有所帮助。