Việc quản lý danh sách file trong Google Drive đôi khi gặp khó khăn, đặc biệt khi thư mục chứa nhiều file. Bài viết này hướng dẫn bạn cách tự động lấy tên tất cả các file trong một thư mục trên Google Drive và tổng hợp vào Google Sheets bằng Google Apps Script, giúp bạn tiết kiệm thời gian và công sức.
Ví dụ, chúng ta có một thư mục mẫu (đã được chia sẻ quyền truy cập) với đường dẫn sau:
https://drive.google.com/drive/folders/**1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF**
Thư mục mẫu trên Google Drive
Thư mục này chứa 3 file: Testfile1, Testfile2, Testfile3. Mục tiêu là lấy tên của cả 3 file này và đưa vào Google Sheets. Chúng ta sẽ thực hiện theo 2 bước:
- Truy cập Google Drive và lấy tên file trong thư mục.
- Ghi tên file vào Google Sheets, mỗi file trên một dòng.
Truy cập Google Drive và Lấy Tên File
Đầu tiên, mở Google Apps Script bằng cách chọn Extensions -> Apps Script. Sau đó, bạn có thể sao chép và dán đoạn mã sau vào:
Mở Apps Script
Giao diện Apps Script
Ảnh GIF minh họa
Đoạn mã để truy cập thư mục và lấy danh sách các file trong thư mục đó trên Google Drive như sau:
var folders = DriveApp.getFolderById('1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF');
var files = folders.getFiles();
Trong đó 1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF
là ID của thư mục (phần in đậm trong đường dẫn ở trên).
Sau khi đã lấy được danh sách file, chúng ta sẽ lặp qua từng file và lấy tên của nó. Google Apps Script cung cấp sẵn ví dụ cho việc này:
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
}
Phương thức getName()
dùng để lấy tên của file. Đoạn mã trên sẽ lặp qua từng file và lấy tên tương ứng.
Ghi Tên File vào Google Sheets
Bây giờ chúng ta sẽ truy cập vào sheet hiện tại bằng lệnh:
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
Sheet1
là tên của sheet mà bạn muốn ghi kết quả vào. Bạn có thể thay đổi tên sheet này cho phù hợp.
Để ghi tên file vào sheet, chúng ta sử dụng phương thức appendRow
. Phương thức này sẽ thêm một dòng mới vào cuối sheet và ghi dữ liệu vào. Kết hợp với vòng lặp ở trên, ta có:
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
ss.appendRow([filename]);
}
Toàn bộ mã cần viết trong Google Apps Script như sau (nhớ thay đổi Folder ID và Sheet name cho phù hợp):
function getfilename() {
var folders = DriveApp.getFolderById('1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF');
var files = folders.getFiles();
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1');
while (files.hasNext()) {
var file = files.next();
var filename = file.getName();
ss.appendRow([filename]);
}
}
Lưu lại dự án (Save project) và chạy hàm vừa tạo (Run the selected function).
Chạy hàm
Lưu ý: Lần đầu chạy hàm, bạn sẽ thấy thông báo yêu cầu cấp quyền truy cập (Review Permissions). Hãy làm theo các bước sau để cấp quyền:
Review permissions
Chọn tài khoản
Chọn Advanced
Cấp quyền
Xác nhận cấp quyền
Nếu gặp lỗi “Exception: No item with the given ID could be found. Possibly because you have not edited this item or you do not have permission to access it.”, hãy kiểm tra lại xem tài khoản Google của bạn đã được cấp quyền truy cập vào thư mục đó chưa.
Kết luận
Với Google Apps Script, việc tổng hợp tên file từ Google Drive vào Google Sheets trở nên đơn giản và tự động. Bạn có thể áp dụng phương pháp này để quản lý file hiệu quả hơn, đặc biệt khi làm việc với lượng lớn dữ liệu.
Discussion about this post