저는 지난번 부트캠프에서 파이썬에 입문하고
이번 기수에서 덱님의 로우코드에 참여하면서 소소하게 자동화를 실행해보는 재미를 느끼고 있습니다.
이번엔 이메일과 웹에서 자료를 자동으로 수집하고 구글 스프레드 시트에 데이터를 저장하는 작업을 자동화 해볼건데요. 이걸 하기로 결정한 이유는
매일 오는 메일이 너무 많다. 약 400~600개
그 중에는 내용이 동일한 걸 형태나 시간 텀을 두고 중복 발송되는 것들이 많다
목록을 일일이 체크해가면서 수동으로 유용한 메일을 골라내는 작업을 하는데 걸리는 시간을 줄이고 싶다.
방법은 1. Zapier 2.파이썬 중 선택할 수 있었고 결과적으로는 두 가지 모두 해봤습니다.
Zapier는 처음 사용해봤지만 Automation Consultant by Zapier라는 GPTs를 사용하니 어떤 액선이나 트리거를 추가해야하는지 아주 상 세하게 알려줘서 생각보다 쉽게 할 수 있었고요.
마지막에 게시하려고 하니 유료전환을 해야해서 파이썬으로도 해보기로 합니다.
코드짜기 시작
사실 코드를 짠다기보다는 그리모어에 해달라고 요청하는게 다입니다.
이메일과 특정 사이트 모든 정보를 수집하는 코드를 짜줘.
간단히 짜줬다고 하지만 모르는 제가 봐도 저 코드로는 네이버 카페 크롤링이 안될 것 같았고
따로 코드를 준걸로 봐서는 뭔가 구분해서 진행해야할 것 같아서 이메일부터 시작했습니다.
구글 인증
API 인증 정보가 없어서 에러가 발생했나봐요.
API 얘기가 나오면 그냥 겁부터 나는 스타일이라 걱정했지만 그냥 알려준데로 진행해봅니다.
프로젝트를 만들고
지메일과 구글 스프레드 시트 API를 사용설정하고 몇 가지 단계들을 진행하니 메일을 불러오는데까지 성공했습니다.
추가요청 1
그대로 메일 내용들을 불러오는 것 까지는 성공했지만 파이참 화면에 제가 알아볼 수 없는 형태로 가져와서 몇 가지 조건들을 추가로 요청합니다.
1. 지메일 계정의 읽지 않은 메일 중에서 특정 단어가 포함된 이메일을 찾아.
2. 찾은 이메일에서 제목, 날짜, 보낸사람, Raw Snippet, Body Plain, 메시지URL, ID를 파싱해.
3. 해당 정보를 데이터베이스를 구글 스프레드 시트에 저장할거야.
이걸 할 수 있는 파이썬 코드를 짜줘
추가 요청 2. 날짜조건
최근 내용만 필요하기 때문에 날짜 조건을 추가했고요.
추가 요청 3. 텍스트 추출로 변경
이메일에서 body Html을 긁어오다보니 일부 메일은 내용이 5만자가 넘어서 구글 스프레드 시트 오류가 발생합니다.
HTML이 아닌 텍스트를 추출하는 것으로 코드를 수정합니다.
추가 요청 4. 메일 계정 추가
여러개의 메일에서 가지고 오는것도 추가해봤습니다.
추가 요청 5. 라벨로 구분하기
구글스프레드 시트로 불러온 메일은 따로 구분할 필요가 있을 것 같아서. 라벨링을 요청했고,
파이썬으로 불러온 후 스프레드시트에 저장한 메일은 아래와 같이 자동으로 분류가 되도록 설정되었습니다.
추가 요청 6. 필터 설정
스프레드시트에는 불러오지 않아도 되는 이메일 주소를 설정하고 싶었어요. 이 부분에서 시간을 가장 많이 썼지만 결국 실패했습니다.
쿼리를 이용해서 할 수 있다고 했지만 여러 버전을 시도해도 절대 걸러지지가 않더라고요.
클로드에도 물어봤는데 클로드, 지피티가 제시한 방법들이 모두 실패해서 조금 불편하지만 한동안은 불러오지 않는 카테고리로 분류하는 작업을 수동으로 진행할 예정입니다.
»이 부분은 덱님이 지메일 자체에서 설정하는 방법을 알려주셔서 해결이 될 것 같습니다.
결과는?
쿼리를 nike로 설정 바꿔보면 아래와 같이 나이키가 포함된 메일을 가져옵니다.
실제로 5일 정도 사용해보고 있는데
메일에서 스프레드 시트에 1차 필터 후 스프레드 시트에서 보낸사람 중복처리 등을 진행하고 나니 유용한 정보를 걸러내는 작업이 훨씬 수월하고 시간도 거의 4분의 1이상으로 줄어든 것 같아서 만족스럽고요.
아쉬운점은 자동화가 되려다가 멈춘느낌이 있어서 이른아침에 님의 앱스스크립트 사례를 참고해서
체크박스에 체크하면 결과물까지 스프레드시트에 작성하는 작업의 프롬프트를 구성해보고 있습니다.
#10기로우코드