В отличие от метода DriveApp.getFilesByType(), который будет искать файлы только в непосредственной папке, я также пытаюсь выполнить поиск файлов внутри подпапок.Поиск файлов внутри подпапок в Google Диске
Обнаружил это 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 != "[email protected]"){
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;
}
bulkFile
function bulkFile(ownerEmail, fileIds) {
var ts = tokenService(ownerEmail);
LibDrive.Init(ts);
var dSA = LibDrive.ServiceAccount(ownerEmail);
return dSA.batchPermissionChange(fileIds, "[email protected]"); //<-- This is the user that recieves the folder/file
}
Спасибо за комментарий, я включил/объемную функцию пакетного только чтобы показать, что подход, вы предлагаете не работает из-за мне нужно передать его как это «функция bulkFile (ownerEmail, fileIds) ". –
Результат выглядит следующим образом: [{[email protected], id = 1aYF62ynb8BYut7mbfrVFHC2GYfxhM0W8}, {[email protected], id = 1C5xhapMROPb3FZoSTRzcafDyZxYUWGpnh0}, {[email protected] com, id = 1UgGC9u2xxPlhbEQ4G1UIz1ktJxdDPqbzOvo}]. –
Я написал, что вывод можно преобразовать из формата массива в формат объекта, который вы хотите. И теперь я включил функцию 'convertToObj', которая делает это. –