Python3.8.3でGmailの特定条件のメールを検索し100件まで表示する

PythonGmailの特定条件のメールを検索し100件まで表示する

#!/usr/bin/env python
# -*- coding: utf-8 -*-
#
# Ryo Chiba
# 2019/06/13 (Sat.)


from __future__ import print_function
from googleapiclient.discovery import build
from httplib2 import Http
from oauth2client import file, client, tools

class GmailAPI:
    def __init__(self):
        # If modifying these scopes, delete the file token.json.
        self._SCOPES = 'https://www.googleapis.com/auth/gmail.readonly'

    def ConnectGmail(self):
        store = file.Storage('token.json')
        creds = store.get()
        if not creds or creds.invalid:
            flow = client.flow_from_clientsecrets('client_secret_665638201308-6i9a4tqnmtl9asdp14sghefdm3tpnudm.apps.googleusercontent.com.json', self._SCOPES)
            creds = tools.run_flow(flow, store)
        service = build('gmail', 'v1', http=creds.authorize(Http()))

        return service

    def GetMessageList(self,DateFrom,DateTo,MessageFrom,MessageBody):

        #APIに接続
        service = self.ConnectGmail()

        MessageList = []

        query = ''
        # 検索用クエリを指定する
        if DateFrom != None and DateFrom !="":
            query += 'after:' + DateFrom + ' '
        if DateTo != None  and DateTo !="":
            query += 'before:' + DateTo + ' '
        if MessageFrom != None and MessageFrom !="":
            query += 'From:' + MessageFrom + ' '
        if MessageBody != None and MessageBody !="":
            query += MessageBody+ ' '

        # メールIDの一覧を取得する(最大100件)
        messageIDlist = service.users().messages().list(userId='me',maxResults=100,q=query).execute()
        #該当するメールが存在しない場合は、処理中断
        if messageIDlist['resultSizeEstimate'] == 0: 
            print("Message is not found")
            return MessageList
        #メッセージIDを元に、メールの詳細情報を取得
        for message in messageIDlist['messages']:
            row = {}
            row['ID'] = message['id']
            MessageDetail = service.users().messages().get(userId='me',id=message['id']).execute()
            for header in MessageDetail['payload']['headers']:
                #日付、送信元、件名を取得する
                if header['name'] == 'Date':
                    row['Date'] = header['value'] 
                elif header['name'] == 'From':
                    row['From'] = header['value']
                elif header['name'] == 'Subject':
                    row['Subject'] = header['value']
            MessageList.append(row)
        return MessageList

if __name__ == '__main__':
	test = GmailAPI()
	#パラメータは、任意の値を指定する
	messages = test.GetMessageList(
		DateFrom='2020-06-10',
		DateTo='2020-06-13',
		MessageFrom='',
		MessageBody='(パスワード|ロック) -(UnitBase|password-reset@aim.aoyama.ac.jp)'
	)
	#    messages = test.GetMessageList(DateFrom='2020-04-01',DateTo='2020-05-15',MessageFrom='contact@aim.aoyama.ac.jp')
	#結果を出力
	for message in messages:
		print(message)