Список имен вложенных папок и ссылок на файлы в листах Google - скрипт

4087
Josh

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

one main folder with a couple of subfolders inside

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

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); }; }; 

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

enter image description here

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

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

0
Вы задаете не по теме вопрос. Пожалуйста, прочтите [On-Topic] (http://superuser.com/help/on-topic), [Как мне задать хороший вопрос?] (Http://superuser.com/help/how-to-ask) и [Какие типы вопросов мне следует избегать?] (http://superuser.com/help/dont-ask). DavidPostill 7 лет назад 1

1 ответ на вопрос

0
Sasha Bond
// 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] );  }  } 

Похожие вопросы