Я пытаюсь получить список ссылок на файлы в папках и подпапках, который хранится в Google Диске. Это должно выглядеть примерно так:

одна основная папка с парой подпапок внутри

Я довольно долго гуглял и читал форумы, но мне удалось найти только несколько примеров сценариев, и не все из них работают. Я нашел один скрипт, который не так уж плох, так как он приносит список файлов со ссылками в одной папке. но я хотел бы получить список файлов со ссылками в подпапках. В идеале все ссылки на папки и имена элементов должны быть перечислены в одной ячейке с разделителем «|». один из лучших примеров сценариев, которые я нашел до сих пор:

function listFilesInFolder(folderName) {

var sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(["Name", "File-Id"]);


//change the folder ID below to reflect your folder's ID (look in the            URL when you're in your folder)
var folder = DriveApp.getFolderById("0ByQ9Zp2ge-pzSjhKdHVWWk0wNnc");
var contents = folder.getFiles();

var cnt = 0;
var file;

while (contents.hasNext()) {
    var file = contents.next();
    cnt++;

       data = [
            file.getName(),
            file.getId(),
        ];

        sheet.appendRow(data);
    };
};

и это приносит результаты в листе

Было бы очень признательно, если бы кто-нибудь мог помочь получить лучшую версию этого кода.

п.с.Есть также несколько больших сценариев, которые мне понадобятся в будущем, за которые я готов заплатить. пожалуйста, напишите мне, если вы заинтересованы.

1 ответ1

0
// replace Guitar_Score below with the folder for which you want a listing with all subfolders
function listFolderContents() {
  var foldername = 'Guitar_Score';
  // file with this name will be saved in your goolge files
  var folderlisting = 'listing of folder ' + foldername;  
  var ss = SpreadsheetApp.create(folderlisting);
  var sheet = ss.getActiveSheet();
  var folders = DriveApp.getFoldersByName(foldername)
  var folder = folders.next();                  
  //listFilesInFolder(folder, sheet);
  traverseFolder(folder, sheet);
};

function traverseFolder(folder, sheet) { 
  listFilesInFolder(folder, sheet);  
  var subFolders = folder.getFolders();
  while (subFolders.hasNext()) {
    traverseFolder(subFolders.next(), sheet);
  }
}

function listFilesInFolder(folder, sheet) {
  var foldername = folder.getName();
  var contents = folder.getFiles();  
  sheet.appendRow( ['...', foldername] );    
  while(contents.hasNext()) {
    var file = contents.next();
    var name = file.getName();
    var link = file.getUrl();
    sheet.appendRow( [name, link] );     
  } 
}

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .