毎日15分かけていた面倒な作業がPythonプログラミングで1秒で終わるようになりました!
どうもヨスケです。
Pythonの勉強を続けて数か月たちましたが、
ついに趣味から仕事に活かす時が来ました。
簡単なスクリプトでしたが、一日15分かけていた作業を1秒でできてしまうので、
少しでも参考になればと思い記事にします。
ヨスケの悩み 単純作業を自動化したい
ヨスケの部署は、とにかく人が足りません。
40手前のヨスケは中間管理職ですが、いまだに単純作業を割り当てられる始末。
今、一番面倒に思っているのが、以下のような作業です。
② メールの件名や本文から テーマ、リンク、件数、配信日を抽出する
③ 抽出した内容をエクセル表に一覧化する
簡単なんですが、本当もう、、、
超めんどくさいんです。
一覧化するOutlook受信メールの内容
エクセルに転記するメールの内容は以下のようなものです。
赤マーカーを付けた部分が抽出したい部分です。
————————————————————————-
件名: 新着案件配信 テーマ:〇× 件数:■▽件 ←一部だけ取り出したい
本文:
ヨスケ様
~中略~
新着案件のリンクを配信します。
← 一行ある
配信日:yyyy/mm/dd ←「配信日:」という文字列が邪魔
■リンクはこちら
https://retire-early40.com ←先頭にスペースがある。
——————————————————————————
Pythonでこれを自動化します。
【ソース一気見せ!】win32comでoutlookを操作
PythonにはWin32comというライブラリが公開されており、
Outlookの操作ができるようになっていることを知りました。
あとは、件名や本文の文字列をうまく扱えば意外と簡単にできます。
恒例のソースコード一気見せです。
サンプルコード
import win32com.client
from openpyxl import Workbook
wb = Workbook()
ws = wb.active
# ひっかけたいメールの件名
SUBJECT = "新着案件配信"
# メールからデータ取得するためのおまじない
object = win32com.client.Dispatch('Outlook.Application')
mapi = object.GetNamespace('MAPI')
# 受信トレイ選択・・・「6」が受信トレイ
inbox = mapi.GetDefaultFolder(6)
# メール取得
mails = inbox.items
pnum = 0
sub_list = []
content_list = []
row = ['No.','テーマ','リンク','件数','受信日']
ws.append(row)
for mail in mails:
# 特定の件名のメールを検索
if SUBJECT in mail.subject:
# メール件名から使用する箇所を特定
sub = mail.subject
sub_list = sub.split()
theme = sub_list[1].strip('テーマ:')
patents = sub_list[2].strip('件数:')
# メール本文から使用する箇所を特定
# 本文を行で分割する
body = mail.body.splitlines()
# 配信日は以下の文章の2行下なので、indexを2つ進める
dateindex = body.index("新着案件のリンクを配信します。")+2
# 文字列から「配信日:」を除去し、日付だけにする
rcv_date = str(body[dateindex]).strip("配 信 日 : ")
# リンクの位置を特定
linkindex = body.index("■リンクはこちら")+1
# 先頭のスペースを除去
plink = str(body[linkindex].strip(' '))
# データ抽出
content_list = [pnum, theme, plink, patents, rcv_date]
# エクセルへ書き込み
ws.append(content_list)
pnum +=1
if pnum>700:
break
# エクセルファイルの保存
wb.save("test.xlsx")
実行結果
実行して出力したエクセルはこんな感じです。
(仕事の内容なので、モザイクですみません)
まとめ
ついに実務でPythonを活用できました!
毎日行っている面倒な作業を自動化すれば、
自分が楽になるのを身をもって体感できました。
仕事につながるとやっぱり勉強のモチベーションにもなります。
今後もPythonで仕事が楽になることがないか探そうと思います。
これまで作成したPythonプログラムについても、
以下の記事でまとめていますので、そちらも参考にしてみてください。
もしよろしければ、ブログランキングについても
ポチっとしていただければ嬉しいです。