前提・実現したいこと
PythonでGmailAPIを使用して、受信ボックス内の特定のメールに記載されているURLを取得してアクセスするシステムを作っています。
受信ボックス内のメッセージの取得はできましたが、URLの抽出方法が不明のため、質問しました。
私は、はやたすさんのyoutubeでプログラミング学習を開始して、これが初めて自分で作成するプログラムです。
お忙しいところ恐縮ですが、先輩方のアドバイスを頂きたくよろしくお願いいたします。
発生している問題・エラーメッセージ
Traceback (most recent call last): File "a.py", line 51, in <module> gmail_get_messages() File "a", line 26, in gmail_get_messages for msg in msg_list['messages'].split(): AttributeError: 'list' object has no attribute 'split'
###エラーありのソースコード
import httplib2, os from apiclient import discovery import gmail # 先ほど作成したプログラム import imaplib import email import re # Gmailのサービスを取得 def gmail_get_service(): # ユーザー認証の取得 credentials = gmail.gmail_user_auth() http = credentials.authorize(httplib2.Http()) # GmailのAPIを利用する service = discovery.build('gmail', 'v1', http=http) return service # メッセージの一覧を取得 def gmail_get_messages(): service = gmail_get_service() # メッセージの一覧を取得 messages = service.users().messages() msg_list = messages.list(userId='me', maxResults=15).execute() # 取得したメッセージの一覧を表示 for msg in msg_list['messages'].split(): topid = msg['id'] msg = messages.get(userId='me', id=topid).execute() #URLを取得 len=[] lists=msg_list.split("\n") for list in lists: if list.find('http://') >-1 or list.find('https://') > -1: len.append(list) httpurl=[] for list in len: top=list.find('http') list=list[top:] a=re.search('[\sあ-んア-ン]',list) start=a.start() list=list[:start] httpurl.append(list) print("---") print(httpurl) # メッセージの取得を実行 gmail_get_messages()
試したこと
for msg in msg_list['messages'].split():
↓
for msg in msg_list[0].split():
補足情報(FW/ツールのバージョンなど)
Windows Python 3.8.5
あなたの回答
tips
プレビュー