Chào mọi người,
Dạo này công việc của mình hay phải gửi báo cáo Excel định kỳ hàng tuần cho sếp. Mỗi lần như vậy lại mất công mở file, đính kèm vào email rồi gửi đi, khá là mất thời gian. Mình nghĩ chắc phải có cách nào đó tự động hóa việc này.
Sau khi tìm hiểu, mình đã thử dùng Python để làm việc này và thấy khá hiệu quả. Hôm nay mình muốn chia sẻ lại với mọi người cách mình đã làm, hy vọng sẽ giúp ích cho ai đó đang gặp tình huống tương tự.
Ý tưởng chung:
- Sử dụng thư viện
pandasđể đọc dữ liệu từ file Excel. - Sử dụng thư viện
smtplibvàemailđể gửi email. - Lên lịch chạy script hàng tuần.
Các bước thực hiện cơ bản:
- Chuẩn bị file Excel: Đảm bảo file báo cáo của bạn có cấu trúc ổn định.
- Viết script Python:
- Import các thư viện cần thiết.
- Đọc dữ liệu Excel bằng
pd.read_excel(). - Định dạng nội dung email (có thể bao gồm tóm tắt dữ liệu hoặc đính kèm file Excel).
- Thiết lập thông tin tài khoản email gửi (tài khoản Gmail hoặc dịch vụ email khác).
- Sử dụng
smtplib.SMTP()để kết nối đến máy chủ email và gửi thư.
- Lên lịch chạy: Có thể sử dụng Task Scheduler trên Windows hoặc
crontrên Linux để chạy script tự động theo lịch.
Ví dụ đoạn code gửi email đơn giản:
import smtplib
from email.mime.text import MIMEText
msg = MIMEText('Nội dung email báo cáo hàng tuần của bạn đây!')
msg['Subject'] = 'Báo cáo hàng tuần'
msg['From'] = 'your_email@gmail.com'
msg['To'] = 'recipient_email@example.com'
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login('your_email@gmail.com', 'your_password')
server.sendmail(msg['From'], msg['To'], msg.as_string())
server.quit()
Lưu ý: Bạn cần bật 'Less secure app access' hoặc tạo 'App password' nếu dùng Gmail.
Mình hy vọng chia sẻ này hữu ích. Nếu ai có cách làm hay hơn hoặc gặp khó khăn, cùng thảo luận nhé!