直接フォルダ内のファイルのみを検索する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のようにそれを渡す必要があるため、機能していないことを示すために、バッチ/バルク機能が含まれて)」。 –
出力は次のようになります。[{owner = [email protected]、id = 1aYF62ynb8BYut7mbfrVFHC2GYfxhM0W8}、{[email protected]、id = 1C5xhapMROPb3FZoSTRzcafDyZxYUWGpnh0}、{[email protected]。 com、id = 1UgGC9u2xxPlhbEQ4G1UIz1ktJxdDPqbzOvo}]。 –
私は、出力を配列形式から必要なオブジェクト形式に変換できると書いています。そして、これを行う 'convertToObj'関数を追加しました。 –