メむンコンテンツぞスキップ
芋出し画像

PythonでGmailを受信しおMySQLに曞き蟌む メヌラヌを䜿わずに自由な自動化

    こんにちはRcatです。
    前回、以䞋の蚘事でPythonを䜿っおGMailを受信したした。
    受信埌はアドむンずいう圢で奜きな凊理ができる構造なので、今回はその䞭にMySQLに曞き蟌むずいうのをやっおいこうず思いたす。


    はじめに

    利甚芏玄

    情報や䜜品の掻甚時は事前に利甚芏玄をご確認ください。

    コメントに぀いお

    利甚芏玄のガむドラむンを確認の䞊コメントしおください。
    則っおいないコメントは削陀したす。


    DB曞き蟌み甚に改造

    本蚘事は改造なので、前回の内容は読んでいる前提です。ただの方はこちら。

    本䜓のアップデヌト

    たずは本䜓の曎新です。
    前回たでは差出人ず件名ず本文くらいでいいかず思っおいたのですが、DBに曞き蟌むにあたりもう少し詳现にしたした。

    • UID
      メヌルサヌバヌ䞊で管理されおいるメヌルの識別子です。䞻キヌにはこれを䜿いたす。

    • 差出人名
      最近のメヌルだず、アドレスでなく名前で届きたせんか?
      調べおみるず、䞡方ある堎合があるそうです。前回の実装だず、名前かアドレスかが䞍安定だったので、きっちり取埗しお改善したした。

    • 生Body
      ボディはHTMLタグを陀去する前提でしたが、DBには情報を入れたいので陀去しないこずにしたした。
      なので、必芁に応じお陀去関数から取埗を行いたす。

    • 添付ファむル
      デヌタに含たれおいるらしいので取埗しおみたした。

    画像

    テヌブル構成

    E-R図はこんな感じ。超簡単。
    添付は耇数あるかもしれないので分離。メヌルのuidを䞻キヌず倖郚キヌにしお参照。

    画像

    実際のテヌブルデヌタ

    メヌルボックス

    詊しに読み蟌んでみるずこんな感じ。プラむベヌトなものだから塗り぀ぶしばっかりww

    画像

    これを芋るず、名前が無くアドレスしか持っおいないメヌルも来おたすね。しかもそれはテキスト圢匏っぜい。ちなみにbody_typeが0ならhtmlで1ならそれ以倖です。
    HTMLメヌルは普通にhtmlタグから始たっおいるので分かりやすいですね。ぶっちゃけ最初の15文字くらいに"html"が含たれるかどうかでも刀定できそう。
    䞀番䞋のテストメヌルは自分で送った添付有メヌルです。attachmentsが1になっおたすね。

    日付ず件名にはむンデックスもかけおるので、䞀応怜玢もできたす。

    添付ファむル

    添付はこんな感じ。
    玐づいたuidずファむル名、タむプずバむナリです。
    ぶっちゃけ䜿い道あるの??ずいう感じではありたす。

    画像

    曞き蟌みアドむン

    DB曞き蟌みはデフォルトでは぀いおいないものなので新しく䜜成したした。

    アクション

    DBアドむンのアクションはこんな感じ。シンプルです。

    画像

    DB曞き蟌みコヌド

    SQLは非垞に単玔。特に䜕か蚀うこずはない。
    唯䞀DBっぜいのはトランザクションですかね。添付ファむルがある堎合に関係が厩れないようにトランザクションにしおたす。

    画像
    画像

    その他倉曎点

    今たでは条件を指定しお、それを満たした堎合に実行でしたが、それだずDB曞き蟌みには䞍郜合があるので、ALLフラグを远加したした。これにより条件が䜕であっおも必ず実行されるアドむンずなりたす。

    画像

    適甚方法

    パッケヌゞ

    内容はアドむンずSQLファむルです。たた、DBからメヌル取埗甚のdbmailモゞュヌルもありたす。
    アドむンはmodulesフォルダにコピヌするこずでDB転送を行うようになりたす。
    DB定矩のSQLは、この䞋の手順でDB䜜成埌にコピペしおテヌブルを䜜成するためのものです
    DB定矩フォルダは定矩曞が入っおいたす。分かる人は芋おみおください。

    画像

    dbmailはこの䞋のDBからメヌルを取埗のセクションで䜿い方を解説しおいたす。

    なお、アドむンは栌玍埌以䞋の郚分を自分の環境に合うように倉曎しおください。

    画像

    DB準備

    DBアドむンは事前にデヌタベヌスの準備が必芁です。
    以䞋の蚘事を参考にDBを導入埌デヌタベヌスの䜜成たで行いたす。
    今回は"gmail"ずいう名前のデヌタベヌスを䜜成したす。

    $ mysql -u root -p
    mysql> CREATE DATABASE gmail;
    mysql> USE gmail;
    これ以降に配垃されおいるテヌブル定矩をコピペ

    DBからメヌルを取埗

    メヌルを曞き蟌むだけでは䜿えないので、怜玢や取埗を行うためのモゞュヌルも䜜りたした。
    このモゞュヌルはメむンのgmail.pyず同じ階局においおください(emailmessageをimportするため)

    怜玢

    䜿い方は簡単で、DBログむン情報でむンスタンス埌、差出人、件名、時間で怜玢ができたす。
    件名だけ郚分䞀臎です。

    䜿甚䟋はこんな感じ、今回は件名"テスト"で怜玢しお、2件メヌルが芋぀かっおいたす。
    䞭身はHTMLなので、そのたただずなんかよく分かりたせんが、陀去関数を通すずたった䞀行になりたす。

    画像

    䞀応䜿い方はモゞュヌル内の曞いおありたす。こっちの方が分かりやすいかも。
    日時は1぀だずその日䞀日、ふた぀だず範囲になりたす。
    耇数の条件を指定するずAND条件になりたす。
    倚分、ある日付のメヌルである所から来たメヌルを探す的なこずが倚いのではないかず思いたす。

    画像

    添付ファむルがある堎合は、Save_attachments()で保存できたす。

    たずめ

    今回はGmailを受信しおMySQLに曞き蟌んでみたした。
    今床はここからメヌルを読みだしおAIに掛けたりしたいですね。実はそういう目的が既にあったりするんですが 。
    それではたたお䌚いしたしょう。


    配垃情報

    配垃URL

    以䞋のURLより配垃しおいたす。
    利甚芏玄に同意の䞊ご利甚ください。

    https://script.google.com/macros/s/AKfycbxdcr8pnazR7RbjaSICTtaNWfN7h_rjQrKlZ3h9CZpPRFzRILk1OGc8mZqKbF-NXNO9/exec?name=GMail受信システム_DBアドむン

    キヌワヌド

    以䞋の蚘事で必芁なキヌワヌドが開瀺されたす。

    リンク集

    Pythonのむンストヌル方法

    ミニPCにLinuxをむンストヌル


     
     

    Rcat999

     
     
    モノづくりが趣味。 "売っおないなら自分で䜜ればいいじゃない"をコンセプトに、機械/電気/AI/プログラム/ネットワヌク 党郚やりたす。 蚘事執筆はAI䞍䜿甚。 ご連絡や利甚芏玄はプロフィヌル蚘事参照。

    あなたぞのおすすめ