前提・実現したいこと
GmailAPIを使用してPythonでメール情報を取得するシステムを作っています。
AttributeErrorの解決方法が不明です。
お忙しいところ恐縮ですがご教示いただきたくよろしくお願いいたします。
発生している問題・エラーメッセージ
AttributeError: 'GmailAPI' object has no attribute 'GetMessageList'
該当のソースコード
Python
1#https://qiita.com/orikei/items/73dc1ccc95d1872ab1cf #参考URL 2 3from __future__ import print_function 4from googleapiclient.discovery import build 5from httplib2 import Http 6from oauth2client import file, client, tools 7 8class GmailAPI: 9 def __init__(self): 10 # If modifying these scopes, delete the file token.json. 11 self._SCOPES = 'https://www.googleapis.com/auth/gmail.readonly' 12 13 def ConnectGmail(self): 14 store = file.Storage('C:\Users\name\Desktop\gmail\client_secret.json') 15 creds = store.get() 16 if not creds or creds.invalid: 17 flow = client.flow_from_clientsecrets('C:\Users\name\Desktop\gmail\credentials-gmail.json', self._SCOPES) 18 creds = tools.run_flow(flow, store) 19 service = build('gmail', 'v1', http=creds.authorize(Http())) 20 21 return service 22 23 24def GetMessageList(self,DateFrom,DateTo,MessageFrom): 25 26 #APIに接続 27 service = self.ConnectGmail() 28 29 MessageList = [] 30 31 query = '' 32 # 検索用クエリを指定する 33 if DateFrom != None and DateFrom !="": 34 query += 'after:' + DateFrom + ' ' 35 if DateTo != None and DateTo !="": 36 query += 'before:' + DateTo + ' ' 37 if MessageFrom != None and MessageFrom !="": 38 query += 'From:' + MessageFrom + ' ' 39 40 # メールIDの一覧を取得する(最大100件) 41 messageIDlist = service.users().messages().list(userId='me',maxResults=100,q=query).execute() 42 #該当するメールが存在しない場合は、処理中断 43 if messageIDlist['resultSizeEstimate'] == 0: 44 print("Message is not found") 45 return MessageList 46 #メッセージIDを元に、メールの詳細情報を取得 47 for message in messageIDlist['messages']: 48 row = {} 49 row['ID'] = message['id'] 50 MessageDetail = service.users().messages().get(userId='me',id=message['id']).execute() 51 for header in MessageDetail['payload']['headers']: 52 #日付、送信元、件名を取得する 53 if header['name'] == 'Date': 54 row['Date'] = header['value'] 55 elif header['name'] == 'From': 56 row['From'] = header['value'] 57 elif header['name'] == 'Subject': 58 row['Subject'] = header['value'] 59 MessageList.append(row) 60 return MessageList 61 62if __name__ == '__main__': 63 test = GmailAPI() 64 #パラメータは、任意の値を指定する 65 messages = test.GetMessageList(DateFrom='2018-01-01',DateTo='2021-02-01',MessageFrom='name@.com') 66 #結果を出力 67 for message in messages: 68 print(message)
補足情報(FW/ツールのバージョンなど)
Windows10 Python 3.8.5
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/04/25 10:14