将Google云端硬盘文件夹中的文件和网址列表放入表格中

时间:2018-09-18 05:12:02

标签: javascript google-apps-script

我正在尝试将文件夹中的文件和URL列表添加到Google工作表中。我拿起了这段代码,但无法实现。当我运行它(替换适当的文件夹名称)时,它仍然无法识别。我已根据需要授予权限。我只是一个试图加快工作量的学生。我对此很陌生,请保持温柔。我在.gs(底部)中的其他功能似乎正常。

/* Code written by @hubgit 
   <style>.gist table { margin-bottom: 0; }</style><div class="gist-oembed" data-gist="hubgit/3755293.json"></div>
   Updated since DocsList is deprecated 
*/

function listFilesInFolder(folderName) {

  var folder = DriveApp.getFoldersByName(folderName).next();
  var contents = folder.getFiles();
  SpreadsheetApp.getActiveSheet().getRange("H1").setValue(contents.length);
  var file, data, sheet = SpreadsheetApp.getActiveSheet();
  //sheet.clear();
  //sheet.appendRow("a");
  sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]);

  for (var i = 0; i < contents.length; i++) {

    file = contents[i];

    if (file.getFileType() == "SPREADSHEET") {
      continue;
    }

    data = [ 
      file.getName(),
      file.getDateCreated(),
      file.getSize(),
      file.getUrl(),
      "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
      file.getDescription(),
      file.getFileType().toString()
    ];

    sheet.appendRow(data);

  }

};

我的工作职能:

function sheetCount(){
  return SpreadsheetApp.getActive().getSheets().length;
}

function SheetIndex2Name(indexPosition){
var spread = SpreadsheetApp.getActiveSpreadsheet();
  return spread.getSheets()[indexPosition].getSheetName();  
}

2 个答案:

答案 0 :(得分:0)

您可以从github尝试以下代码:

注意:只需将Docslist.getFolder更改为DriveApp.getFoldersByName

function listFilesInFolder(name) {

var folder = DriveApp.getFoldersByName(name);
var contents = folder.getFiles();
var file, data;

var sheet = SpreadsheetApp.getActiveSheet();
sheet.clear();

sheet.appendRow(["Name", "Date", "Size", "URL", "Download", "Description", "Type"]);

for (var i = 0; i < contents.length; i++) {

  file = contents[i];

  if (file.getFileType() == "SPREADSHEET") {
    continue;
  }

  data = [ 
    file.getName(),
    file.getDateCreated(),
    file.getSize(),
    file.getUrl(),
    "https://docs.google.com/uc?export=download&confirm=no_antivirus&id=" + file.getId(),
    file.getDescription(),
    file.getFileType().toString()
  ];

  sheet.appendRow(data);

}

};

参数:

  

名称 字符串

     
      
  • 要查找的文件的名称
  •   

返回

  

FileIterator -是属于以下子项的所有文件的集合   当前文件夹并具有给定名称

有关更多信息:

答案 1 :(得分:0)

这部分代码似乎不可靠

    function listFilesInFolder(folderName) 
    {
       var folder = DriveApp.getFoldersByName(folderName).next();
       var contents = folder.getFiles();
       //More codes
    }

因此,此代码更加可靠,而无需手动获取/输入名称或ID

function listFilesInFolder()
{
  thisFileId = SpreadsheetApp.getActive().getId();
  var thisFile = DriveApp.getFileById(thisFileId);
  var folder = thisFile.getParents().next(); 
  //More codes
}

据我所知,有时一个文件是两个文件夹的子文件夹。在这种情况下,此代码将无法正常运行。