
それでは、前項「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カスタマイズ事例やウェブ制作ノウハウの新着情報、お役立ち情報を
リアルタイムにメルマガ配信!