この実装、面倒なら代行します
それでは、前項「Gmailから一括取得するメールリストのラベルIDを調べる」でメモしたラベルを指定してメールの本文を一括取得します。
ただし、Gmail APIの公式ドキュメントにもあるのですが、Gmail APIでは一度に取得できるメールは最大で500件とあります。
なので、仕方ないですがギリギリいっぱいの500件まで取得します。
まず関数を作ります。
※ 前項までのコードは記述した状態で、その下に書いていく処理だけをここでは紹介しますので、前項までのコードを用意してください。
#メール本文を500件取得する関数 def gmail_get_500messages_body(service, labelIdsValue): message_list = [] # メッセージの一覧を取得 messages = service.users().messages() msg_list = messages.list(userId='me', labelIds=labelIdsValue, maxResults=500).execute() # 各message内容確認 for message_id in msg_list["messages"]: message = {} # 各メッセージ詳細 msg = messages.get(userId='me', id=message_id['id']).execute() # 本文 if(msg["payload"]["body"]["size"]!=0): decoded_bytes = base64.urlsafe_b64decode( msg["payload"]["body"]["data"]) decoded_message = decoded_bytes.decode("UTF-8") message["body"] = decoded_message else: #メールによっては"parts"属性の中に本文がある場合もある decoded_bytes = base64.urlsafe_b64decode( msg["payload"]["parts"][0]["body"]["data"]) decoded_message = decoded_bytes.decode("UTF-8") message["body"] = decoded_message message_list.append(message) return message_list
実行します。
messages = gmail_get_500messages_body(service, 'XXXXXX') # XXXXXX にはラベルのIDを入れる
※ ここで出てくるラベルIDの取得については、前項「4. Gmailから一括取得するメールリストのラベルIDを調べる」にあります。
中身を見てみましょう。
messages
ずらりと出てきます。
・・・でもなあ、500件までかあ・・・と思った方、ご安心ください。
次のページでは、500件以上のメールリストでも全件取得する方法をご紹介します。(なんだよ!)
では。
WordPressカスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!
100ウェブで手がけた制作・開発案件を一部、ご紹介。
クライアントからご相談いただいた内容とその実装におけるポイント、工期、予算について確認いただけます。
【テレワーク実施中 につきお電話転送中】
コール中1秒程度無音状態になりますがそのままお待ちください。
受付時間
平日 10:00~18:00
メールでのお問い合わせでも
1営業日以内にご連絡いたします。