• Lam's Notes
  • Posts
  • Google Drive của tôi, nơi trú ngụ của… hư không? 🤔

Google Drive của tôi, nơi trú ngụ của… hư không? 🤔

Chuyện là thế này, các anh em ạ! Hôm nay, Lâm quyết định “dọn dẹp” Google Drive của mình. Nói “dọn dẹp” cho sang mồm vậy thôi, chứ thực ra là mình đang tìm… thư mục rỗng. Vâng, bạn không nghe nhầm đâu, là thư mục rỗng đấy!

Bạn biết đấy, cảm giác “sạch sẽ” khi xóa được những thứ vô dụng nó “phê” lắm. Và Lâm, một lập trình viên “chân chính”, không thể để mấy cái thư mục trống trơn “ám” mình được. 😤

Thế là tôi xắn tay áo lên, “gõ phím rung lắc Google” với Apps Script. Và “tèn ten”, đoạn code thần thánh đã ra đời:

function findEmptyFoldersInbyLamEE() {
  var parentFolderName = 'Test';
  var parentFolder = DriveApp.getFoldersByName(parentFolderName).next();

  if (!parentFolder) {
    Logger.log('Không tìm thấy thư mục ' + parentFolderName);
    return;
  }

  var emptyFolders = [];
  var folders = parentFolder.getFolders();
  var startTime = new Date().getTime(); // Định nghĩa biến startTime

  while (folders.hasNext()) {
    var folder = folders.next();
    var files = folder.getFiles();
    var subfolders = folder.getFolders();
    var isEmpty = true;

    while (files.hasNext()) {
      isEmpty = false;
      break;
    }

    while (subfolders.hasNext()) {
      isEmpty = false;
      break;
    }

    if (isEmpty) {
      emptyFolders.push(folder.getName() + ' (ID: ' + folder.getId() + ')');
    }

    // Chỉ xử lý một phần nhỏ của dữ liệu trong mỗi lần chạy
    if (new Date().getTime() - startTime > 5 * 60 * 1000) {
      ScriptApp.newTrigger('findEmptyFoldersInbyLamEE')
        .timeBased()
        .after(5 * 60 * 1000)
        .create();
      break;
    }
  }

  if (emptyFolders.length > 0) {
    Logger.log('Các thư mục trống trong ' + parentFolderName + ':');
    emptyFolders.forEach(function(folder) {
      Logger.log(folder);
    });
  } else {
    Logger.log('Không có thư mục trống nào trong ' + parentFolderName);
  }
}

Chi tiết các bước:

  1. Mở Google Drive và tạo một Google Apps Script mới.

  2. Dán đoạn mã trên vào.

  3. Lưu và chạy chức năng findEmptyFoldersbyLamEE.

  4. Kiểm tra log (Nhật ký) để xem danh sách các thư mục trống.

Đoạn code này sẽ “lùng sục” trong thư mục “Test” và liệt kê ra tất cả những “kẻ khả nghi” không chứa bất kỳ file hay thư mục con nào. Thú vị phải không? 😄

Mình đã ứng dụng thực tế trên Drive 2 TB hiệu quả nhé nhưng cần phải bổ sung thêm Drive API, anh em làm theo hình là được

Cấp quyền Drive API

Nào, hãy cùng “mổ xẻ” code một chút. Đầu tiên, ta khai báo tên thư mục cần kiểm tra (“Test” trong trường hợp này). Sau đó, code sẽ truy cập Google Drive, tìm kiếm thư mục “Test” và “nhảy” vào bên trong. Tại đây, code sẽ “soi” từng thư mục con một. Nếu “bắt gặp” thư mục nào trống trơn, “không tì vết”, nó sẽ “ghi nhớ” lại tên và ID của “kẻ khả nghi” đó.

Trường hợp bạn muốn dọn dẹp toàn bộ Google Drive của mình thì xài đoạn code sau:

function findEmptyFoldersInbyLamEE(folderName) {
  var parentFolder;
  
  if (!folderName) {
    parentFolder = DriveApp.getRootFolder();
  } else {
    var folders = DriveApp.getFoldersByName(folderName);
    if (!folders.hasNext()) {
      Logger.log('Không tìm thấy thư mục ' + folderName);
      return;
    }
    parentFolder = folders.next();
  }

  var emptyFolders = [];
  var folders = parentFolder.getFolders();
  var startTime = new Date().getTime(); // Định nghĩa biến startTime

  while (folders.hasNext()) {
    var folder = folders.next();
    var files = folder.getFiles();
    var subfolders = folder.getFolders();
    var isEmpty = true;

    while (files.hasNext()) {
      isEmpty = false;
      break;
    }

    while (subfolders.hasNext()) {
      isEmpty = false;
      break;
    }

    if (isEmpty) {
      emptyFolders.push(folder.getName() + ' (ID: ' + folder.getId() + ')');
    }

    // Chỉ xử lý một phần nhỏ của dữ liệu trong mỗi lần chạy
    if (new Date().getTime() - startTime > 5 * 60 * 1000) {
      ScriptApp.newTrigger('findEmptyFoldersInbyLamEE')
        .timeBased()
        .after(5 * 60 * 1000)
        .create();
      break;
    }
  }

  if (emptyFolders.length > 0) {
    Logger.log('Các thư mục trống trong ' + parentFolder.getName() + ':');
    emptyFolders.forEach(function(folder) {
      Logger.log(folder);
    });
  } else {
    Logger.log('Không có thư mục trống nào trong ' + parentFolder.getName());
  }
}

Giờ thì yên tâm rồi, Google Drive của tôi đã được “thanh tẩy”, không còn “bóng ma” thư mục rỗng nào “lảng vảng” nữa. 😎 Còn bạn thì sao? Mau “copy” đoạn code này và “giải phóng” Google Drive của bạn đi!

Reply

or to participate.