내가 내 25K + 여기 게시물에 유사한 이메일을 분석하려고 해요 받아 향상된 보안을 위해 Gmail API를 사용합니다. 저는 Python (및 데이터 분석을 위해 Pandas)을 사용하고 있지만이 질문은 일반적으로 Gmail API 사용에 적용됩니다.의 Gmail API 신속/지금까지 보낸 모든 이메일의 날짜에 액세스은
msgs = service.users().messages().list(userId='me', maxResults=500).execute()
다음은 루프를 사용하여 데이터 액세스 :
for msg in msgs['messages']:
m_id = msg['id'] # get id of individual message
message = service.users().messages().get(userId='me', id=m_id).execute()
payload = message['payload']
header = payload['headers']
for item in header:
if item['name'] == 'Date':
date = item['value']
** DATA STORAGE FUNCTIONS ETC **
그러나 이것은 분명히 매우 느립니다 워드 프로세서
, 내가 사용하여 이메일을 읽을 수 있어요. 모든 메시지를 루핑하는 것 외에도 list() API 호출을 여러 번 호출하여 모든 이메일을 순환시켜야합니다.더 높은 성능의 방법이 있습니까? 예 : 원치 않는 모든 메시지 정보가 아닌 데이터 만 반환하도록 API에 요청하십시오.
감사합니다.
참조 : https://developers.google.com/resources/api-libraries/documentation/gmail/v1/python/latest/gmail_v1.users.messages.html 당신은 배치하여 messages.get을() 작업 배치로 할 수
많은 감사의 목록에 의해 주어진 메시지를 가져옵니다 거친 파이썬 예입니다! 일괄 처리는 내가 원하는 것을 소리 쳤다. 하지만 여전히 전체 메시지를 가져온 다음 모든 메시지를 반복하여 데이터를 추출합니다. 특정 데이터 만 반환하는 방법을 알고 있습니까? 아니면 더 효율적으로 수행합니까? 또한, 나는 여전히 목록 ID/메시지를 얻기 위해 일괄 호출 전에 목록/list_next 사용해야 할 것 같아요? 건배 – SLater01
"어떤 특정 데이터"를 원하십니까? (예, list()를 사용하여 mesage id 목록을 얻은 다음 get()을 사용하여 세부 정보를 가져옵니다). – payne
format = 'minimal'로 설정하면 감사하겠습니다. 이렇게하면 메시지 본문 등을 무시하고 낭비되는 데이터 전송을 방지합니다. – SLater01