我需要使用谷歌脚本列出子文件夹中的所有文件 [英] I need to list all the files in subfolders using google script

查看:92
本文介绍了我需要使用谷歌脚本列出子文件夹中的所有文件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为文件夹中的所有文件制作汇总表。这是我迄今为止,但我不知道如何列出folderid子文件夹中的文件。任何想法都将不胜感激。

// GLOBAL VARIABLESvar ss = SpreadsheetApp.getActiveSpreadsheet()。getSheets() [0];函数onOpen(){ss.getRange(1,1,100,10).clear({contentsOnly:true})var id =folderid; var arr = [[CAPITAL PROJECT,URLs,OWNER]]; var f = DriveApp.getFolderById(id).getFiles()while(f.hasNext()){var file = f.next(); var name = file.getName()var url = file.getUrl()var own = file.getOwner()。getName()arr.push([name,url,own]); ss.getRange(1,1,arr.length,arr [0] .length).setValues(arr); } ss.getRange(2,1,arr.length,arr [0] .length).sort(1)var second = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(Sheet2)second.activate()}

解决方案

获得主文件夹后,你可以得到子文件夹。如果有多个子文件夹,则需要一个内部循环:



我测试过这段代码,它工作正常:

  function getAndListFilesInFolder(){
var arr,f,file,folderName,subFolders,id,mainFolder,name,own,sh,thisSubFolder,url;

sh = SpreadsheetApp.getActiveSpreadsheet()。getSheets()[0];
sh.getRange(1,1,100,10).clear({contentsOnly:true})

id =Put_Your_FolderID_Here;
arr = [[CAPITAL PROJECT,URLs,OWNER,FOLDER]];

mainFolder = DriveApp.getFolderById(id);
subFolders = mainFolder.getFolders();
folderName = mainFolder.getName();

f = mainFolder.getFiles(); (f.hasNext()){
file = f.next();


name = file.getName()
url = file.getUrl()
own = file.getOwner()。getName()

arr.push([名称,url,own,folderName]);
};

while(subFolders.hasNext()){
thisSubFolder = subFolders.next();
f = thisSubFolder.getFiles();
folderName = thisSubFolder.getName(); (f.hasNext()){
file = f.next();


name = file.getName()
url = file.getUrl()
own = file.getOwner()。getName()

arr.push([名称,url,own,folderName]);
};
};

sh.getRange(1,1,arr.length,arr [0] .length).setValues(arr);
sh.getRange(2,1,arr.length,arr [0] .length).sort(1);

$ b // var second = SpreadsheetApp.getActiveSpreadsheet()。getSheetByName(Sheet2)
//second.activate()
}


I am trying to make a summary sheet for all files in a folder. This is what I have so far, but I cannot figure out how to list the files in the subfolders of "folderid". Any ideas would be greatly appreciated.

//GLOBAL VARIABLES

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];

function onOpen() {
    ss.getRange(1, 1, 100, 10).clear({contentsOnly: true})

    var id = "folderid";
    var arr = [["CAPITAL PROJECT", "URLs", "OWNER"]];

    var f = DriveApp.getFolderById(id).getFiles()
    while (f.hasNext()) {

        var file = f.next();
        var name = file.getName()
        var url = file.getUrl()
        var own = file.getOwner().getName()

        arr.push([name, url, own]);

        ss.getRange(1,1, arr.length, arr[0].length).setValues(arr);
    }

    ss.getRange(2,1, arr.length, arr[0].length).sort(1)

    var second = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2")
    second.activate()
}

解决方案

Once you get the main folder, you can get the sub-folders. If there are multiple sub-folders, you'll need an inner loop:

I've tested this code and it works:

function getAndListFilesInFolder() {
  var arr,f,file,folderName,subFolders,id,mainFolder,name,own,sh,thisSubFolder,url;

  sh = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
  sh.getRange(1, 1, 100, 10).clear({contentsOnly: true})

  id = "Put_Your_FolderID_Here";
  arr = [["CAPITAL PROJECT", "URLs", "OWNER","FOLDER"]];

  mainFolder = DriveApp.getFolderById(id);
  subFolders = mainFolder.getFolders();
  folderName = mainFolder.getName();

  f = mainFolder.getFiles();

  while (f.hasNext()) {
    file = f.next();
    name = file.getName()
    url = file.getUrl()
    own = file.getOwner().getName()

    arr.push([name, url, own, folderName]);
  };

  while (subFolders.hasNext()) {
    thisSubFolder = subFolders.next();
    f = thisSubFolder.getFiles();
    folderName = thisSubFolder.getName();

    while (f.hasNext()) {
      file = f.next();
      name = file.getName()
      url = file.getUrl()
      own = file.getOwner().getName()

      arr.push([name, url, own,folderName]);  
    };
  };

  sh.getRange(1,1, arr.length, arr[0].length).setValues(arr);
  sh.getRange(2,1, arr.length, arr[0].length).sort(1);


  //var second = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet2")
  //second.activate()
}

这篇关于我需要使用谷歌脚本列出子文件夹中的所有文件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆