Tạo Google Apps Script
Tạo Google Apps Script

Đặt vấn đề

Có những lúc, chúng ta cần tải file về lưu ở Google Drive. Tuy nhiên tải về máy rồi lại upload lên Google Drive khá tốn thời gian, đặc biệt là đối với các file dung lượng lớn và mạng chậm.

Có những lúc vì lí do gì đó mà chúng ta không kết nối được đến file server, không thể tải file về máy trực tiếp được, nhưng ở nơi khác thì kết nối được. Chúng ta có thể nghĩ đến cách tải file về Google Drive, sau đó từ Google Drive tải về máy.

Mặc dù đã có các dịch vụ trực tuyến giúp chúng ta làm việc này như “Cloud Transfer”, ” Save Cloud files to Google Drive™”. Nhưng các dịch vụ này vẫn hay có lỗi, và quan trọng hơn hết là khi sử dụng dịch vụ, chúng ta phải cấp quyền cho các dịch vụ đó truy cập vào Google Drive của chúng ta, và chúng ta không biết những dịch vụ đó có đáng tin cậy hay là không.

Bài viết này mình chia sẻ cách tải, lưu file trực tiếp vào Google Drive mà không dùng đến dịch vụ của bên thứ ba. Cụ thể là dùng Google Apps Script, được cung cấp bởi chính Google.

Tải file đơn giản

Trước tiên, chúng ta tạo một file Google Apps Script. Rồi dán, hoặc gõ lại đoạn code sau, thay đổi url và fileName theo ý bạn.

Sau đó chạy hàm myFunction. Khi Google yêu cầu cấp quyền cho đoạn script này thì đồng ý cấp quyền là được.

Đợi quá trình thực thi hoàn tất, vào My Drive (Drive của tôi) để thấy file mới tải về của bạn.

Bổ sung cookie

Có nhiều file server đòi hỏi ta phải đăng nhập để tải file. Đối với những file server như vậy, chúng ta có thể dùng đến cookie. Cách lấy cookie thế nào thì các bạn tự tìm hiểu Google nhé.

Sửa lại hàm downloadToDrive như sau:

Bổ sung cookie vào lời gọi hàm, và …

Ngoài cookie, các bạn có thể tùy chỉnh một số thứ khác nữa. Tham khảo link bên dưới nhé. https://developers.google.com/apps-script/reference/url-fetch/url-fetch-app

Đánh giá

Phương pháp mình chia sẻ cũng có những hạn chế điển hình như không hiển thị download progress. Đối với các file lớn, khi không có progress, chúng ta không biết phải chờ trong bao lâu nữa, cảm giác ấy khá khó chịu. Tuy nhiên nó vẫn sẽ nhanh hơn việc ta tải về máy rồi upload lên Google Drive. Mình không nghĩ tốc độ internet của bạn nhanh hơn được tốc độ internet của máy chủ Google đâu.