是否可以创建列出以下内容的Google Apps脚本:
1)特定主文件夹(及其每个相关子文件夹)中的所有文件名?
示例:
根\照片\ 02.JPG
根\照片\ 03.jpg
...
根\照片\ 2010 \ 02.JPG
根\照片\ 2010 \ 2010-02 \ 03.jpg
...
2)与1)相同,但只有" .ini" 完成的文件名(例如我有一些不需要的" .picasa.ini"我在线谷歌硬盘中的文件?)
答案 0 :(得分:0)
由于您的驱动器中出现了(确实)很多文件和文件夹,我想首先要知道驱动器中的所有文件夹和子文件夹,下面的脚本会创建第二个电子表格中的工作表,并显示所有文件夹及其各自的树+网址。
它还显示总执行时间(以秒为单位),我不必提醒您此值不应超过-300秒......
因此,我建议您先尝试一下,然后再将结果时间报告给我们。
function listFolders(){
var ss = SpreadsheetApp.getActiveSpreadsheet();
if(!ss.getSheetByName('Sheet2')){ss.insertSheet(1).setName('Sheet2')};
var sh = ss.getSheetByName('Sheet2');
var start = new Date();
var dateString = Utilities.formatDate(new Date(),Session.getTimeZone(), 'MMM-dd-yyyy');
var topFolder = DocsList.getRootFolder() ; // start point
var foldersArray = [];
foldersArray = getFolders(topFolder.getName().replace('Root','MyDrive'),topFolder,foldersArray);
foldersArray.unshift(['Folders url','path','# SubFolders']);
// Logger.log(foldersArray)
var l = foldersArray.length
var duration = (new Date().getTime()-start.getTime())/1000;
var durationString = Utilities.formatString("%01.1f", duration)
sh.clear();
sh.setColumnWidth(2,500);
sh.getRange(1,1,1,foldersArray[0].length).setBackground('#ffffaa').setBorder(true,true,true,true,true,true).setFontWeight('bold');
sh.getRange(1,1,l,foldersArray[0].length).setValues(foldersArray).setVerticalAlignment('middle').setWrap(false);
sh.getRange(l+1,2,1,foldersArray[0].length-1)
sh.getRange(l+1,1).setFontColor('grey').setFontSize(9).setVerticalAlignment('middle').setWrap(true).setHorizontalAlignment('center').setValue('execution time: '+durationString+' Seconds');
sh.setFrozenRows(1);
}
function getFolders(path, container,arrayin) {
var folders = container.getFolders(0, 500);
var folderCount = folders.length;
if(path=='MyDrive'){arrayin.push(['https://drive.google.com/?hl=fr&tab=wo#my-drive',path,folderCount])}
else{arrayin.push([container.getUrl(),path,folderCount])}
for (var i=0;i<folders.length;i++) {
var thisFolder = folders[i].getName();
var thisPath = path+"/"+thisFolder;
getFolders(thisPath,folders[i],arrayin)
}
return arrayin;
}