Advertisement
Namokonov

Давай файлы!

Jun 28th, 2021
1,455
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. //t.me/@google_sheets
  2. //Скрипт > извлекаем файлы из папки / папок, создаём реестр в Таблице.
  3. //Попадается изображение – добавляем функцию =IMAGE, которая покажет картинку в Таблице
  4.  
  5.  
  6. function myFunction() {
  7.   //определяем лист в активной книге
  8.   const sh = SpreadsheetApp.getActive().getSheetByName('Лист1');
  9.   //забираем из ячейки B1 ячейку с ссылками / ссылкой на папки
  10.   const urls = sh.getRange("b1").getValue();
  11.  
  12.   //очищаем на листе диапазон А4:D
  13.   sh.getRange("A4:E").clearContent();
  14.  
  15.   //делим нашу ячейку с ссылками по "," и получаем несколько ссылок
  16.   //или одну, если она была одна
  17.   urls.split(",").forEach(url => {
  18.     //обходим каждую ссылку в цикле - забираем файлы
  19.     const files = DriveApp.getFolderById(getIdFromUrl(url)).getFiles();
  20.     //задаём пустой массив
  21.     const arr = [];
  22.     while (files.hasNext()) {
  23.       //и наполняем этот массив данными про файлах из папки
  24.       const file = files.next();
  25.       const [type, name, url_file] = [file.getMimeType(), file.getName(), file.getUrl()];
  26.  
  27.       //название, ссылка на папку, ссылка на файл, тип файла и есть тип фал изображение - создаём функцию =image с id файла
  28.       arr.push([name, url, url_file, type, type == 'image/png' ? `=IMAGE("https://docs.google.com/uc?export=download&id=${file.getId()}")` : ''])
  29.     }
  30.  
  31.     //вставляем массив на лист;
  32.     sh.getRange(sh.getLastRow() + 1, 1, arr.length, arr[0].length).setValues(arr);
  33.     SpreadsheetApp.flush();
  34.   }
  35.   //переходим к следующей ссылке на папку, если она есть
  36.   )
  37. }
  38.  
  39. //функция - регулярка для извлечения из URL файла / папки ID
  40. function getIdFromUrl(url) { return url.match(/[-\w]{25,}/); }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement