Advertisement
Namokonov

movetor

Oct 9th, 2021
1,066
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2. Таблица с примером https://docs.google.com/spreadsheets/d/161b7qSFSpJh8MMDeKjMRfPUqAFLT4VEqL_PPgV4Wm0o/edit?usp=sharing
  3.  
  4. ✅ Канал о Таблицах: https://t.me/google_sheets
  5. ✅ Чат: https://t.me/google_spreadsheets_chat
  6. ✅ Оглавление канала: https://goo.gl/HdS2qn
  7.  
  8. ПЕРЕМЕЩАТОР – продолжаем показывать магию с Google Диском
  9.  
  10. Привет, недавно в наш пришли с вопросом — у меня есть список ссылок на файлы на Google Диске, как мне каждый из них скопировать в 10 папок?
  11.  
  12. Наш сегодняшний скрипт отвечает на этот вопрос, а еще он может не только копировать, но и перемещать файлы.
  13.  
  14. Инструкция, как пользоваться:
  15. 1) копируйте Таблицу со скриптом себе;
  16. 2) заполняйте URL файла и URL папки для перемещения (столбцы A и B);
  17. 3) выбирайте: копируем или перемещаем (столбец C);
  18. 4) запускайте скрипт из меню с 🔥 (при первом запуске скрипт попросит авторизацию – это нормально, это вы разрешаете вашему скопированному скрипту обратиться к вашему диску, разрешаем);
  19.  
  20. Скрипт запустится и скопирует / переместит файлы исходя из настроек, попутно заполнит информацию в Таблице (название файла, название папки, результат и время), если вы запустите скрипт еще раз – скрипт обработает строки только без результата copy / move done.
  21.  
  22. Да и чтобы копировать файлы - у вас должен быть доступ и к файлу и к папке назначения 😉
  23. */
  24.  
  25. function move_files() {
  26.   let sheet = SpreadsheetApp.getActive().getSheetByName('MAIN');
  27.  
  28.   sheet.getRange("a3:g" + sheet.getLastRow()).getValues()
  29.     .forEach((row, i) => {
  30.       let [url_file, url_folder, done, action] = [row[0], row[1], row[6], row[2]];
  31.       if (url_file && url_folder && action && !['copy done', 'move done'].includes(done)){
  32.         let result, url_file_new, file_name, folder_name;
  33.         try {
  34.           let file = DriveApp.getFileById(getIdFromUrl(url_file));
  35.           let folder = DriveApp.getFolderById(getIdFromUrl(url_folder));
  36.           [file_name, folder_name] = [file.getName(), folder.getName()]
  37.           if (action == 'К') {
  38.             url_file_new = file.makeCopy(file_name, folder).getUrl();
  39.             result = 'copy done';
  40.           } else if (action == 'П') {
  41.             url_file_new = file.moveTo(folder).getUrl();
  42.             result = 'move done';
  43.           }
  44.         } catch (e) {
  45.           result = '❌ проверьте ссылки на файл / папку в строке, также у вас должен быть доступ; error: ' + e.name;
  46.         }
  47.         sheet.getRange(i + 3, 4, 1, 5).setValues([[file_name, url_file_new, folder_name, result || '❌ что-то не заполнили', new Date()]]);
  48.         SpreadsheetApp.flush();
  49.       }
  50.     })
  51. }
  52.  
  53. function getIdFromUrl(url) {
  54.   return url.match(/[-\w]{25,}/);
  55. }
  56.  
  57. function onOpen(e){
  58.   SpreadsheetApp.getUi()
  59.   .createMenu("🔥 СКРИПТЫ")
  60.   .addItem("Запустить перемещатор!", "move_files")
  61.   .addToUi();
  62. }
  63.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement