PR

【Python開発記①】展示会お礼メールを自動化したい!Excel読み取り編

スポンサーリンク
Python
スポンサーリンク

■ 導入:きっかけは「現場の困った」から

こんにちは、ニンジンです。 普段は電子機器制御のためにPythonを触っていますが、ふと思ったんです。 「Pythonで便利なソフトを作って、ワンコイン(500円)で販売してみたら売れるかな?」

そうはいっても、何を作れば喜ばれるのか。 そんな時、営業部の人から**「展示会後のお礼メールを一人ずつ出すのがとにかく大変なんだ……」という悩みを聞きました。 「それ、Pythonなら一瞬で自動化できるんじゃない?」 これが、メール一括送信ソフト「NINJIN Mail」**開発の始まりでした。

スポンサーリンク

■ 構想設計:シンプルかつ直感的に

まずは「誰に向けて、何をしたいか」を整理します。
ソフトウェアは複雑にせず、誰でも直感で操作できることを目指しました。

  • ターゲット: 展示会のお礼メールや招待メールを送る営業マン。
  • 名簿読み込み: 扱いやすいExcelファイルから氏名、アドレス、会社名を吸い出す。
  • 一括送信:Excelから吸い出した情報を差し込みながら本文を送信する
  • ログ記録: 誰に送ったのか記録も残ればベスト。
  • 活用シーン: 展示会のお礼メール、セミナーの招待メールなど。
深掘りした構想設計

何をするか構想がでたら具体的にどうするかを深堀りしてみます。

  • 名簿は任意のフォルダにあるExcelファイルを吸い出して取得しよう。
  • GUIアプリケーションから「件名」と「本文」を入力する。
  • 送信はOutlookのAPIを使ってOutlookを操作して送信しよう。
  • 配信結果(ログ)は名簿に使ったExcel内に追記して履歴をとろう。
  • 使い勝手をよくするため、Excelファイル場所を記憶させる。
スポンサーリンク

開発準備:必要なライブラリ

構想設計した事を実現するために必要なライブラリを検討します。

役割ライブラリ名
Excelの読み書きpandas, openpyxl
GUI(操作画面)の作成tkinter
Outlookの操作pywin32
設定ファイルの運用json
送信日時の記録time

豆知識pywin32は64bit版のWindowsやPythonでも問題なく動作します。ライブラリ側で自動調整してくれるので、ユーザーは気にせず使って大丈夫ですよ!

ライブラリのインストール

作業するPCに、ライブラリがインストールされていない場合は以下のコマンドを実行して、事前にインストールしておきましょう。

※コマンドプロンプトかWindows PowerShellにて実行

pip install pandas

※インストール中にNumpyのWARNINGが出ることがありますが、「Successfully installed」と表示されていれば問題ありません。

pip install openpyxl
pip install pywin32

※pip install pandas openpyxl pywin32 左記コマンドで一括インストールも可

スポンサーリンク

■ ステップ①:pandasで顧客データを読み取る

まずは全ての基本となる、Excelデータの読み込みからスタートです。

  • 名簿用のExcelファイル: ファイル名を「client_list.xlsx」とします。
  • client_list.xlsxはPythonコード(mail-soft-test01.py)と同じフォルダ内に設置して下さい。

サンプルコード mail-soft-test01.py
※VSCodeなどのエディターにてサンプルコードを実行して下さい

import pandas as pd

def load_client_list(file_path):
try:
# Excelファイルを読み込む
df = pd.read_excel(file_path)

# 1行ずつ処理して読み込みを確認
for index, row in df.iterrows():
name = row['氏名']
email = row['アドレス']
company = row['会社名']

print(f"読み込み中: {company} {name} 様 ({email})")

except Exception as e:
print(f"エラーが発生しました: {e}")

# 実行(同じフォルダにExcelがある前提)
load_client_list('client_list.xlsx')

最初の実験結果と「気づき」

ターミナルにExcelのデータが吸い出され、出力されていれば成功です!

無事に読み取ることができましたが、実用化に向けた課題も見つかりました。

  • ファイルパス: Pythonファイルと同じフォルダにExcelを置かないと動かない。
  • ヘッダー名の重要性: row['氏名'] のように指定するため、Excelの1行目が一致していないとエラーになる。
  • 空行の扱い: 名簿の途中に空行があるとエラーになるので、改良が必要。
スポンサーリンク

■ 次回予告

第1回はここまで! Excelの中身を覗くことには成功しましたが、これではまだ「プログラム」です。

次回は、**「Windowsでおなじみのファイル選択画面」を作り、さらに「一度選んだ場所を記憶させる」**という、UX(ユーザー体験)を向上させる仕組みに挑戦します。

「たかが1クリック、されど1クリック」。 業務効率化ツールの愛着は、こういう細かい工夫から生まれると思っています!

実際にNoteにて販売中
Codeに興味がある方
Codeとか面倒くさいと思う方
是非チェックしてみて下さい

実験販売ですが、期待もしつつ、まぁ売れないよなと思っていますw
応援購入お待ちしております。

スポンサーリンク

NINJIN Mailシリーズはこちら

【Python開発記②】「たかが1クリック」を削る!ファイル選択と設定保存の実装

【Python開発記③】完結編:Outlookを自動操作!実用ツールへの仕上げと販売への挑戦

コメント