Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa gửi báo cáo Excel hàng ngày bằng Python và Gmail API

Giang Hướng Dao 20/03/2026 13:07 550 lượt xem 3 trả lời

Chào mọi người,

Dạo gần đây mình có tìm hiểu về cách tự động hóa một số tác vụ lặp đi lặp lại trong công việc, đặc biệt là với Excel. Mình thấy nhiều anh em trong diễn đàn chia sẻ các bài viết về Python tương tác với Excel rất hay, nên mình cũng muốn đóng góp một chút kinh nghiệm cá nhân.

Hôm nay, mình muốn chia sẻ cách tự động hóa việc gửi báo cáo Excel hàng ngày qua email bằng Python và Gmail API. Đây là một ứng dụng thực tế giúp tiết kiệm thời gian đáng kể, đặc biệt khi bạn cần gửi báo cáo cho nhiều người hoặc gửi định kỳ.

Các bước thực hiện cơ bản:

  • Chuẩn bị dữ liệu Excel: Đảm bảo file báo cáo của bạn đã sẵn sàng.
  • Cài đặt thư viện cần thiết: pip install google-api-python-client google-auth-httplib2 google-auth-oauthlib
  • Thiết lập Gmail API: Bạn cần tạo một dự án trên Google Cloud Console, bật Gmail API và tạo khóa API.
  • Viết script Python: Sử dụng các thư viện đã cài đặt để đọc file Excel, tạo nội dung email và gửi đi thông qua Gmail API.

Ví dụ về cách gửi email đơn giản:

from google.oauth2.credentials import Credentials
from google_auth_oauthlib.flow import InstalledAppFlow
from googleapiclient.discovery import build

# ... (Code thiết lập credentials và service)

def create_message(sender, to, subject, message_text):
    from email.mime.text import MIMEText
    message = MIMEText(message_text)
    message['to'] = to
    message['from'] = sender
    message['subject'] = subject
    return {'raw': base64.urlsafe_b64encode(message.as_bytes()).decode()}

def send_message(service, user_id, message):
    try:
        message = (service.users().messages().send(userId=user_id, body=message)
                   .execute())
        print(f'Message Id: {message["id"]}')
        return message
    except Exception as e:
        print(f'An error occurred: {e}')
        return None

# ... (Gọi hàm để gửi email)

Mình sẽ cố gắng viết một bài hướng dẫn chi tiết hơn với đầy đủ code và giải thích các bước thiết lập API trong thời gian tới. Các bạn có câu hỏi hoặc muốn thảo luận thêm về chủ đề này thì cứ comment bên dưới nhé!

0

Chào bạn,

Bài viết của bạn rất hay và thiết thực! Tự động hóa gửi báo cáo bằng Python đúng là giải pháp tuyệt vời cho các tác vụ lặp đi lặp lại.

Mình đang tự hỏi là bạn xử lý thế nào với các trường hợp báo cáo có định dạng phức tạp hoặc cần lọc dữ liệu trước khi gửi? Có cách nào để tùy chỉnh nội dung email (ví dụ: thêm lời nhắn dựa trên kết quả báo cáo) một cách linh hoạt không?

Rất mong được bạn chia sẻ thêm kinh nghiệm!

5

Mình thấy cách bạn dùng Python để tự động hóa gửi báo cáo Excel rất hay, đặc biệt là phần kết hợp với Gmail API. Đúng là tiết kiệm được khối thời gian.

Nhân tiện, mình cũng có một cách làm tương tự nhưng dùng Google Sheets API thay vì Excel. Nếu có file báo cáo nằm trên Google Sheets thì thao tác cũng khá gọn gàng. Không biết bạn đã thử qua Google Sheets API chưa, có điểm nào thú vị hơn so với làm việc trực tiếp với file Excel không?

4

Cảm ơn bạn đã quan tâm đến bài viết! Về câu hỏi của bạn:

Đối với báo cáo có định dạng phức tạp, mình thường sử dụng thư viện pandas để đọc và xử lý dữ liệu Excel trước. Sau đó, mình có thể ghi lại ra một file Excel mới với định dạng mong muốn hoặc chỉ gửi các bảng dữ liệu đã qua xử lý.

Còn việc tùy chỉnh nội dung email, hoàn toàn có thể làm được. Bạn có thể đọc kết quả từ báo cáo, ví dụ như tổng doanh thu, số lượng sản phẩm bán ra, rồi dùng các câu lệnh điều kiện trong Python để tạo ra những lời nhắn khác nhau cho email. Thậm chí, bạn có thể đính kèm file báo cáo dưới dạng PDF thay vì Excel nếu muốn.

Hy vọng giải đáp này hữu ích cho bạn!

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký