Получение списка файлов и URL-адресов в папке Google Drive на листе - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь получить список файлов и 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 голосов
/ 20 сентября 2018

Эта часть кода кажется ненадежной

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

Так что этот код гораздо надежнее без необходимости ввода / ввода имени или идентификатора вручную

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

Насколько я знаю, бывают случаи, когда один файл является дочерним по отношению к двум папкам.В этом случае этот код не будет работать должным образом.

0 голосов
/ 18 сентября 2018

Вы можете попробовать этот код из 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 - коллекция всех файлов, которые являются дочерними текущая папка и имеет имя

Для получения дополнительной информации:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...