【发布时间】:2016-04-12 15:00:46
【问题描述】:
与仅在直接文件夹中搜索文件的 DriveApp.getFilesByType() 方法不同,我也在尝试搜索子文件夹中的文件。
找到了关于它的bloggpost,它按原样工作。 但是我的脚本需要将结果推送到一个数组中。到目前为止,我可以将文件推送到数组,但我没有获取子文件夹的文件。
我有 3 个功能:
trigger_GetDriveFiles
function trigger_GetDriveFiles(){
var folder = DriveApp.getFolderById("0B2XfBTL5aSGMZTNwTDlwT2JqNjg");
var filesJSObj = GetDriveFiles(folder);
for(var i in filesJSObj){
if(filesJSObj.hasOwnProperty(i)){
Logger.log(bulkFile(i, filesJSObj[i]));
}
}
}
GetDriveFiles(注释掉的部分是失败的地方)
function GetDriveFiles(folder) {
var files = {};
var fileIt = folder.getFiles();
while (fileIt.hasNext()) {
var f = fileIt.next();
var owner = f.getOwner().getEmail();
var id = f.getId();
if (owner != "admin.fileshare@domain.com"){
if (!files[owner]) {
files[owner] = [];
}
// push the file to the owner's array
files[owner].push(id);
}
}
/*
// Get all the sub-folders and iterate, This is the part not wokring!
var folderIt = folder.getFolders();
while(folderIt.hasNext()) {
fs = GetDriveFiles(folderIt.next());
for (var i = 0; i < fs.length; i++) {
files.push(fs[i].id)
}
}*/
return files;
}
批量文件
function bulkFile(ownerEmail, fileIds) {
var ts = tokenService(ownerEmail);
LibDrive.Init(ts);
var dSA = LibDrive.ServiceAccount(ownerEmail);
return dSA.batchPermissionChange(fileIds, "admin.fileshare@domain.com"); //<-- This is the user that recieves the folder/file
}
【问题讨论】:
标签: javascript arrays google-apps-script google-drive-api