1. 必要なライブラリのインストール
まず、メール送信に必要なPythonのライブラリをインストールします。標準ライブラリを使用するので、特別なインストールは不要ですが、環境によってはpandasを使用してExcelファイルを読み取ることがあるため、その場合は以下のコマンドを実行してください。
pip install pandas openpyxl
2. Pythonプログラムの作成
次に、以下のPythonコードを作成します。このプログラムは、Excelファイルから業務終了時刻と実績を読み取り、上司にメールを送信します。
import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
import pandas as pd
# Excelファイルから業務終了時刻と実績を読み込む
def read_report_data(file_path):
df = pd.read_excel(file_path, sheet_name="業務報告")
end_time = df.iloc[0, 1] # B1セル
achievement = df.iloc[1, 1] # B2セル
return end_time, achievement
# メールを送信する
def send_email(to_address, subject, body):
from_address = "your_email@example.com"
password = "your_password"
# メールの設定
msg = MIMEMultipart()
msg['From'] = from_address
msg['To'] = to_address
msg['Subject'] = subject
msg.attach(MIMEText(body, 'plain'))
# メールサーバーに接続してメールを送信
try:
server = smtplib.SMTP('smtp.gmail.com', 587)
server.starttls()
server.login(from_address, password)
text = msg.as_string()
server.sendmail(from_address, to_address, text)
server.quit()
print("メールが送信されました。")
except Exception as e:
print(f"エラーが発生しました: {e}")
# メイン処理
def main():
# Excelファイルのパス
file_path = "report.xlsx"
# 業務終了時刻と実績を取得
end_time, achievement = read_report_data(file_path)
# 上司のメールアドレス
to_address = "boss@example.com"
# メールの件名と本文
subject = f"業務終了報告: {pd.Timestamp.now().strftime('%Y/%m/%d')}"
body = f"""
お疲れ様です。
本日の業務が終了しましたので、以下の通り報告いたします。
【業務終了時刻】: {end_time}
【実績内容】: {achievement}
ご確認のほどよろしくお願いいたします。
--------------------------------------------------
このメールは自動送信されました。
"""
# メールを送信
send_email(to_address, subject, body)
if __name__ == "__main__":
main()
3. プログラムの動作
- Excelファイルの準備
- 「業務報告」というシートを持つExcelファイルを作成し、A1セルに「業務終了時刻」、A2セルに「実績内容」、B1セルに終了時刻、B2セルに実績を記入します。
- ファイル名を
report.xlsxとし、同じディレクトリに保存してください。
- プログラムの実行
- 上記のPythonコードを実行すると、Excelファイルからデータを読み込み、指定した上司のメールアドレスにメールが送信されます。
4. 注意点
- Gmailの設定: Gmailを使用する場合、セキュリティ設定で「安全性の低いアプリのアクセス」を許可する必要があります。最近のGoogleのアップデートでこの設定が難しくなっているため、アプリパスワードを設定するか、
OAuth2を使う方法も検討してください。 - ファイルパスとシート名:
file_pathやsheet_nameは適宜変更してください。
このプログラムを利用することで、業務終了時の報告メールを自動化でき、業務効率が向上します。