雲端目錄把所有指定目錄下的檔案全部列出,方便查看。
列出目錄下所有檔案可以製作副本 https://docs.google.com/spreadsheets/d/1lt6LSiDlYdXto_kSznIjy8MBMsT-0PykpJ5ban_8aDE/edit?usp=sharing
在觸發條件可以增加開啟文件時,createMenu ,最右方增加選單,不用每次進指令編輯器中執行。
程式:
//修改這一行,點雲端檔目錄,在網址上出現的 id
var folderId = '1w81_xYzkY4ZNXkMU16XR3xzBGpaPYPME';
//加入選單功能
function createMenu(){
var menuEntries = [ {name: "更新全部檔案", functionName:"listAll"}];
var sh = SpreadsheetApp.getActiveSpreadsheet();
sh.addMenu("*檔案整理",menuEntries);
}
// 主程式
function listAll(){
//目錄 id , 是否列出目錄 , 是否再進入子目錄
getFolderTree_data(folderId, true , true);
};
// 取得目錄樹狀結構
function getFolderTree_data(folderId, onlyFile , listSub) {
try {
// 目錄的 id
var parentFolder = DriveApp.getFolderById(folderId);
var parentName = parentFolder.getName() ;
var file, sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();
sheet.appendRow(["檔名","下載" , "目錄", "日期"]);
var data = [] ;
getChildFolders_data (parentName, parentFolder, data , onlyFile , listSub);
//Logger.log(data) ;
//把檔案列表放入 sheet 中
var range = sheet.getRange(2,1, data.length ,4);
range.setValues(data) ;
//第一行鎖住不排序
sheet.setFrozenRows(1);
//時間排序
//range.sort([{column: 4, ascending: false}]);
} catch (e) {
Logger.log(e.toString());
}
};
// 取得下方資料
function getChildFolders_data(parentName, parent, data, onlyFile , listSub) {
//子目錄
var childFolders = parent.getFolders();
while (childFolders.hasNext()) {
var childFolder = childFolders.next();
//Logger.log("Folder Name: " + childFolder.getName());
if (!onlyFile) {
//檔案日期
var file_date = Utilities.formatDate(childFolder.getLastUpdated(), "GMT", "yyyy-MM-dd");
//連結
//var gid = 'https://drive.google.com/drive/folders/' + childFolder.getId() ;
var file_link = '=HyperLink("' + childFolder.getUrl()+ '"," link ")';
var file_data =[] ;
file_data=[
childFolder.getName(),
file_link ,
parentName ,
file_date
];
data.push(file_data) ;
Logger.log("Folder Name: " + childFolder.getName());
}
// 再找子目錄
if (listSub ) {
getChildFolders_data(parentName + "/" + childFolder.getName(), childFolder, data ,onlyFile ,listSub );
//Logger.log("...Folder Name: " + childFolder.getName());
}
//Logger.log(data) ;
}
// 目錄下的檔案
var files = parent.getFiles();
while (files.hasNext()) {
var childFile = files.next();
//Logger.log("File Name: " + childFile.getName());
if (childFile.getName() != '檔案列表') {
//檔案日期
var file_date = Utilities.formatDate(childFile.getLastUpdated(), "GMT", "yyyy-MM-dd");
//連結
//var gid = 'https://drive.google.com/u/0/uc?id=' + childFile.getId() +'&export=download';
var file_link = '=HyperLink("' + childFile.getUrl()+ '"," link ")';
//檔案資料
var file_data =[] ;
file_data=[
childFile.getName(),
file_link ,
parentName ,
file_date
];
data.push(file_data) ;
}
}
};