Pythonでメールフォームを大量集計する技の極意 コピペ&クリックでExcelデータに早変わり
必要な項目を抜き出してExcelファイルに貼り付ける
13~55行目のgetData関数は、[データ追加]ボタンをクリックすると呼び出され、必要な項目を抜き出してExcelファイルに追加します。
15行目のget メソッドでテキストボックスからテキストを取り出し、16行目のsplitlines メソッドで1行ずつ分割したリストに変換します。18行目から22行目のループは、空白行を取り除く処理です。最終的に変数msgListには、メールから空白行を取り除き、1行ずつ並べたものが入ります。
24行目から42行目では、繰り返し処理によって目的の項目を探し、変数dataDicの辞書(データをキーと値のペアで管理する構造)に追加する処理です。
例えば現在見ている行に「・お名前」が入っていれば、その1行下の内容をdataDic["・お名前"]に入れます。
繰り返し処理が終わると、次のように「キー」「値」が並んだ辞書ができ上がります。
44行目以降は、pandas(Pythonのライブラリ)を使って、Excelファイルにデータを追加します。
まずread_excel関数で「顧客リスト.xlsx」を読み込んで、変数dfに入れておきます。
⇒次に「値」だけを取り出したリストを作る
次に、先ほど辞書にデータを追加したdataDicの「値」だけを取り出したリストを作ります。このときに値の並び順をExcelファイル側の列と合わせておきます。
変数dfの列見出し(columns)と作成したリストを元にDataFrameオブジェクト(表形式のデータ)を作成して、変数df2に入れます。
51行目ではappendメソッドを使って、dfにdf2を連結します。このとき、列数が合っていないとエラーが発生するので注意してください。あとはto_excelメソッドでファイルを保存し、messagebox.showinfo関数で完了を伝えるメッセージボックスを表示します。
集計する項目を増やしたい場合
集計する項目を増やしたい場合、getData関数の中を2箇所ほど修正し、Excelファイルにも列を増やす必要があります。
例えば「・その他」という項目を追加したいとします。
まずはgetData関数のデータ取得ループに、「・その他」を見つけたら辞書に追加する処理を加えます。
さらに、Excelファイルに書き出す部分で、変数dataのリストに「・その他」の値を追加します。
無料会員登録はこちら
ログインはこちら