Advertisement
Namokonov

quadcode_getFiles

Jul 16th, 2021
1,228
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. function getFiles() {
  2.   //определяем лист 'Файлы' в активной книге
  3.   const sh = SpreadsheetApp.getActive().getSheetByName('Файлы');
  4.  
  5.   //забираем из ячейки B1 ячейку с ссылками / ссылкой на папки
  6.   const urls = sh.getRange("b1").getValue();
  7.  
  8.   //задаём пустой массив (наполним его информацией про файлы)
  9.   let arr = [];
  10.  
  11.   //очищаем на листе 'файлы' диапазон А4:G
  12.   sh.getRange("A4:G").clearContent();
  13.  
  14.   //задаём простую вложенную функцию - она переберёт файлы в заданной папке, если внутри папки будут другие папки - функция спустится в них
  15.   const getFiles = (folder, arr) => {
  16.     const files = folder.getFiles();
  17.  
  18. //цикл, идёт пока файлы в папке не закончатся
  19.     while (files.hasNext()) {
  20.       //и наполняем этот массив данными про файлах из папки
  21.       const file = files.next();
  22.       const [type, name, url_file, ts_created, sharing_access, sharing_access_permission] = [
  23.         file.getMimeType(), file.getName(), file.getUrl(), file.getDateCreated(), file.getSharingAccess(), file.getSharingPermission()];
  24.  
  25.       arr.push([name, url_file, folder.getName(), folder.getUrl(), type, ts_created, sharing_access, sharing_access_permission])
  26.     }
  27.  
  28.     const folders = folder.getFolders();
  29.     while (folders.hasNext()) {
  30.       const folder = folders.next();
  31.       getFiles(folder, arr)
  32.     }
  33.   }
  34.  
  35.   //делим нашу ячейку с ссылками по "," и получаем несколько ссылок
  36.   //или одну, если она была одна
  37.   urls.split(",").forEach(url => {
  38.     //обходим каждую ссылку в цикле - собираем информацию про файлы - наполняем наш массив
  39.     const folder = DriveApp.getFolderById(url.match(/[-\w]{25,}/));
  40.     getFiles(folder, arr);
  41.   })
  42.  
  43.   //вставлям массив на лист;
  44.   sh.getRange(sh.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr);
  45.   SpreadsheetApp.flush();
  46. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement