[GAS]DriveApp

giaiphapvba

Administrator
Thành viên BQT
Lấy File, Folder bằng Google Apps Script
VBA chúng ta đã quen thuộc với FSO. Nhưng đấy là môi trường offline. Trong môi trường online, cụ thể chúng ta đang lưu file trên google driver, vậy thì làm cách nào để lấy danh sách file cũng như folder trên đó?
Với GAS, chúng ta có thể lấy tên (file or folder) hoặc thay đổi tên của chúng. Chúng ta có thể lấy thông tin chủ sở hữu (hoặc thay đổi?), lấy và thay đổi account dùng chung, xóa hoặc phục hồi chúng (file or folder).
Trong DriveApp được giới thiệu lần này, các thư mục và tệp được lấy bằng các phương pháp khác nhau, nhưng nếu bán sử dụng Drive API của Advanced Google Services (dịch vụ nâng cao của Google), bạn có thể lấy các thư mục và tệp trong một xử lý mà không cần phân biệt file hay folder.

1. Code mẫu getFolderById(id)
Mã:
//Lay folder thong qua ID duoc chi dinh
function sampleCodeForDriveAppGetFolderById() {
  var id = "1ohmSR625ShiR0hoBr9DFL7Zkh9VX8jXH"; //Folder ID
  var folder = DriveApp.getFolderById(id);
  console.log(folder);
}
Id của folder là gì, giả sử bạn truy cập vào một folder và nhìn lên URL của trình duyệt thấy đường link như sau:
Mã:
https://drive.google.com/drive/folders/1ohmSR625ShiR0hoBr9DFL7Zkh9VX8jXH
Phần phía sau chính là là id của folder.
Mã:
1ohmSR625ShiR0hoBr9DFL7Zkh9VX8jXH
(Còn nữa)
Nguồn tham khảo:
 

tuhocvba

Administrator
Thành viên BQT
2. Code mẫu getFolders()
JavaScript:
//Chuong trinh lay tat ca folder trong foder duoc chi dinh
function sampleCodeForDriveAppGetFolders1() {
  var id = "1ohmSR625ShiR0hoBr9DFL7Zkh9VX8jXH"; //Folder ID
  var target = DriveApp.getFolderById(id);
  var folders = target.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    var folderName = folder.getName();
    console.log(folderName);
  }
}

//Chuong trinh lay tat ca folder trong myDriver
function sampleCodeForDriveAppGetFolders2() {
  var myDrive = DriveApp.getRootFolder();
  var folders = myDrive.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    var folderName = folder.getName();
    console.log(folderName);
  }
}

//Chuong trinh lay tat ca folder tren driver (tuy thuoc so luong folder ma xu ly co the bi TimeOut)
function sampleCodeForDriveAppGetFolders3() {
  var folders = DriveApp.getFolders();
  while (folders.hasNext()) {
    var folder = folders.next();
    var folderName = folder.getName();
    console.log(folderName);
  }
}
Trong đó:
id = Folder ID
target = Folder theo ID duoc chi dinh
myDrive = MyDriver Folder
folders = FolderIterator
folder = Một Folder
folderName = Tên Folder
Phương hức getFolders sẽ trả về FolderIterator.
Xử lý vòng lặp sẽ lấy tất cả tên các folder.
Khi tìm bằng FolderIterator, thứ tự tìm kiếm sẽ bị xáo trộn, nên nếu muốn tìm theo thứ tự tăng dần hoặc giảm dần, bạn cần sắp xếp trong quá trình xử lý tiếp theo.
Nếu bạn sử dụng phương thức Drive API, bạn có thể chỉ định thứ tự lấy thông tin folder, vì vậy nếu bạn muốn kiểm soát trật tự khi lấy thông tin folder, tốt hơn hết bạn nên sử dụng Drive API.
Code trên bạn có thể cứ thế copy và sử dụng.
Trong trường hợp không chỉ định folder đích, mà tìm kiếm tất cả folder có trên driver, đối với sampleCodeForDriveAppGetFolders3, khi số lượng folder nhiều, có thể xảy ra lỗi. Ngay khi chương trình kết thúc, hãy ấn Ctr + Enter để xác nhận log. Tôi nghĩ rằng tất cả tên folder trong mỗi thư mục đích, đều được xuất ra log. Để tham khảo, bên dưới là ảnh chụp màn hình log khi thực thi sampleCodeForDriveAppGetFolders1.
Bạn cần đăng nhập để thấy đính kèm

Nguồn tham khảo :
 
Top