Thẻ: lấy toàn bộ file

Lấy tên toàn bộ file trong folder Google Drive vào Google Sheets

Để tổng hợp nhanh các file trong 1 thư mục vào trong Google Sheets, ta có thể viết một đoạn script nho nhỏ sử dụng Google App Script. Trong bài viết này, Học Excel Online sẽ hướng dẫn bạn cách lấy tên toàn bộ file từ folder trên Google Drive và đưa vào trong Google Sheets.

Ví dụ ta có một folder mẫu đã được chia sẻ quyền truy cập với đường dẫn sau:

https://drive.google.com/drive/folders/1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF

Trong folder đã bao gồm 3 file với tên Testfile1, Testfile2, Testfile3. Công việc ở đây là lấy toàn bộ tên 3 file và tổng hợp vào Google Sheets. Để thực hiện ta sẽ chia thành 2 bước:

  1. Truy cập Google Drive và lấy tên file trong folder
  2. Ghi các tên file vào trong Google Sheets, mỗi file là một dòng

Truy cập Google Drive và lấy tên toàn bộ file trong folder Google Drive

Đầu tiên ta mở App Script bằng cách chọn Extensions -> App Script. Tại đây, bạn có thể bắt đầu gõ các dòng lệnh bên dưới vào.

Đoạn code để truy cập vào folder và lấy tập hợp các file thuộc folder đó trong Google Drive như sau:

var folders=DriveApp.getFolderById('1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF')
var files = folders.getFiles()

Trong đó 1f6umsjEz6s2erp6SCnL2TZ8AdTAIyDjF là ID của folder (phần in đậm trên link đầu bài).

Khi đã lấy được tập hợp các file, ta sẽ cần đi qua từng file và lấy tên tương ứng. Và ngay trong tài liệu hướng dẫn của Google đã đề cập đến ví dụ này nên ta sẽ sử dụng luôn:

while(files.hasNext()) {
	var file = files.next()
	var filename = file.getName()
}

với getName() là phương thức để lấy tên của file. Hiểu đơn giản, đoạn trên sẽ giúp lặp qua từng file và lấy tên của file đó.

Tới đây, ta có thể ghi tên các file vào Google Sheets.

Ghi các tên file vào trong Google Sheets, mỗi file là một dòng

Tạm để filename sang một bên. Giờ ta sẽ truy cập vào Sheet đang mở bằng lệnh:

var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Sheet1')
Trong đó Sheet1 là tên sheet nơi muốn đặt kết quả. 
Khi đã xác định nơi đặt kết quả, ta sẽ sử dụng phương thức appendRow để điền dữ liệu vào dòng cuối của vùng dữ liệu trong Sheet. Cụ thể, ngay tại vòng lặp ở trên, mỗi khi có được file name, ta sẽ tiến hành ghi ngay:
while (files.hasNext()) {
  var file = files.next() 
  var filename = file.getName() 
  ss.appendRow([filename])
}

Tổng kết lại, những gì ta cần ghi vào trong Google App Script như sau (với phần Folder ID và Sheet name tùy chỉnh):


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]) 
  }
}

Sau đó ta bấm Save project và ấn Run the selected function để chạy.

Lưu ý: Trong trường hợp lần đầu tiên khởi chạy Function, ta sẽ nhận được 1 thông báo Review Permission. Lý do vì Google sẽ yêu cầu quyền truy cập tới Folder trên. Ta tiến hành theo các bước:

Chọn Review permissions
Chọn tài khoản
Chọn Advanced

Trong trường hợp 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.“, bạn cần kiểm tra lại tài khoản Google của mình đã được cấp quyền truy cập vào folder đó hay chưa.

Tham khảo thêm các bài viết về Google Apps Script tại: https://blog.hocexcel.online/google-apps-script