受信メールをGoogleスプレッドシートに保存する
- 2015年2月20日
- by SendGrid
- Category: 技術ネタ
今回は、SendGridのParse Webhook機能で受信したメールの内容を「gspread」というPythonモジュールを使ってGoogleスプレッドシートに保存する方法をご紹介します。
Parse WebhookはSendGridが提供するメールの受信機能です。この機能を利用することで、あるドメイン宛のメールの内容をあらかじめ設定したURLにPOSTできます。それでは早速設定をしていきましょう。
前提条件
DNSの設定
まずはじめに、あるドメイン宛のメールをSendGridが処理できるようにします。そのドメインのMXレコードを「mx.sendgrid.net」に変更します。
GSpreadモジュールとGoogleスプレッドシートの準備
モジュールのインストール
次にPOSTを受信するサーバ(Python環境が整っている前提)上にgspreadその他関連モジュールをインストールします。インストールにはpipを利用します。
pip install gspread flask requests
Googleスプレッドシートの作成
データの保存先となるGoogleスプレッドシートを作成します。スプレッドシート名は「ParseWebhook」としてGoogleドライブのルート上に作成します。
なお、gspreadからGoogleスプレッドシートへアクセスするためにGoogleのアカウント設定で安全性の低いアプリのアクセスをオンにする必要があります。
コードの修正と実行
Flask(Python用マイクロWebフレームワーク)上で動作するコード(ファイル名はapp.py)は以下の通りです。このコードは、受信したPOST内のFrom、Subject、Spam Scoreを取得してスプレッドシートに保存します。そして、以下の部分を修正します。
- googleUserとgooglePassにGoogleアカウントの認証情報を設定するよう修正
- gc.open()の引数に先ほど作成したスプレッドシートの名前「ParseWebhook」を渡すよう修正
from flask import Flask, request import requests import os import gspread app = Flask(__name__) googleUser = 'Googleアカウントの認証情報' googlePass = 'Googleアカウントの認証情報' gc = gspread.login(googleUser, googlePass) wks = gc.open("作成したスプレッドシートの名前").sheet1 def getNextRow(): values_list = wks.col_values(1) #gets all values in first column emptyrow = str(len(values_list)+1) return emptyrow def addRow(email, subject, spam_score): row = getNextRow() emailCell = 'A'+row subjectCell = 'B'+row spamCell = 'C'+row wks.update_acell(emailCell, email) wks.update_acell(subjectCell, subject) wks.update_acell(spamCell, spam_score) @app.route('/', methods = ['POST']) def insertData(): email = request.form['from'] subject = request.form['subject'] spamscore = request.form['spam_score'] addRow(email, subject, spamscore) return "OK" if __name__ == '__main__': app.debug = True app.run()
このコードをサーバ上に配置して実行してください。
python app.py * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat
Parse Webhookの設定
Parse Webhookの設定を行います。SendGridのダッシュボードでParse Incoming Emails設定を開き、メールを受信するドメインとアプリケーションURLを設定します。迷惑メールチェック(Spam Check)をオンにするのを忘れないでください。詳しい操作手順については操作マニュアル(会員登録が必要)をご確認ください。
メールの送信と結果の確認
メールの送信
メールを受信するドメインの任意のアドレス宛にメールを送信します。
結果の確認
受信したメールの内容がアプリケーションにPOSTされ、アプリケーションがスプレッドシートにレコードを記録することを確認します。
この例では、以下の情報が記録されます。
- A列:From
- B列:Subject
- C列:Spam Score
参考
Parse Webhook/Webhookについては以下の記事もご確認ください。