Gmail에 라벨 하나만 붙이면 GAS가 자동으로 Jira 티켓을 생성해 준다. 판단은 내가, 실행은 자동화가 담당하는 구조다.
Google Apps Script를 내가 실제로 사용하는 케이스로 정리하려고 하고 있다.
우선 나는 개인 업무 관리는 2가지 방식으로 하고 있다.
하나는 Gmail inbox 이메일을 남겨 두고, 다른 하나는 Slack의 "나중에" 표시를 해두고 둘 다 하나도 남겨두지 않으려고 하고 있다.
업무 이력 관리 등을 위해서 회사는 Jira 티켓으로 관리하는 것을 가이드하고 있다.
그럼 여기서 연결 포인트, 개선 포인트가 생기게 되는데, 그것은 바로 Jira 티켓을 만드는 프로세스다
Jira 티켓을 만드는 것은 메일 또는 슬랙 내용을 정리/요약해서 중복 작업인데, 이력 관리 및 업무 관리의 목적은 알겠지만 괜한 시간을 잡아먹는 일이기도 하다.
이 워크플로를 조금 나눠서 생각하기로 했다.
**나 **
이 업무를 티켓으로 관리해야겠다는 판단을 한다.
**Google Apps Script **
내가 선택한 메일 내용을 지라 티켓으로 자동으로 만든다.
그래서 나는 메일에 Jira 라벨을 붙이고, Google Apps Script는 주기적으로 Jira 라벨이 있는 메일이 있는지를 체크해서 자동으로 Jira ticket 을 만들고 jira-done 라벨을 붙인다. 이걸 반복한다.
위의 시나리오로 Google Apps Script 자동화를 진행해 본다.
우선 내가 준비해야 하는 것을 알아보자.
바이브 코딩을 하다 보면, 개발보다는 준비물 준비하는 방법을 빨리 파악하는 것이 중요한 것 같다.
**1. Jira APl token **
Manage API tokens for your Atlassian account | Atlassian Support
2. Jira Project 정보
JIRA_BASE_URL : 회사 JIRA URL
프로젝트 ID
Jira Ticket 타입 : Epic, Story, sub-task 등
(옵션) JIRA_PARENT_ISSUE : 상위 티켓의 sub-task로 생성
JIRA_ASSIGNEE_ID : Jira에서 나의 account id
결국 요약하면
어떤 프로젝트의 어떤 티켓에 담당자를 나로 설정해서 티켓을 만들어줘를 할 때 필요한 값 들이다.
※팁
내가 뭘 준비해야 하는지도 질문하자. 그러면 잘 알려준다.
Google Apps script를 활용해서 Gmail 에 내가 jira 라는 라벨을 붙이면,
주기적으로 해당 메일(제목, 본문, 첨부파일)을 Jira 티켓으로 만들어주고
성공하면 jira-done 이라는 라벨을 붙여주는 워크플로 자동화를 하고 싶어.
이 때 내가 미리 준비해야 하는 것이 있으면 알려줘
*답변 *
# Gmail → Jira 자동화를 위한 사전 준비 사항
## 1. Jira 측 준비
**API 토큰 발급**
- Atlassian 계정 설정에서 API 토큰을 생성해야 합니다
- 이 토큰은 스크립트가 Jira에 접근할 때 인증 수단으로 사용됩니다
**프로젝트 정보 확인**
- 티켓을 생성할 프로젝트의 키(예: PROJ, DEV 등)를 확인하세요
- 사용할 이슈 타입(Task, Bug, Story 등)의 ID나 이름도 필요합니다
**권한 확인**
- 해당 프로젝트에 이슈 생성 권한이 있는지 확인하세요
- 첨부파일 추가 권한도 필요합니다
---
## 2. Gmail 측 준비
**라벨 생성**
- `jira` 라벨을 미리 만들어두세요
- `jira-done` 라벨도 미리 생성해두는 것이 좋습니다
---
## 3. Google Apps Script 프로젝트 설정
**서비스 활성화**
- Gmail API 서비스를 프로젝트에 추가해야 합니다 (첨부파일 처리를 위해 Advanced Gmail Service 필요)
**스크립트 속성 설정**
- Jira 도메인 (예: yourcompany.atlassian.net)
- Jira 이메일 주소
- API 토큰
- 프로젝트 키
이 정보들은 코드에 직접 넣지 않고 스크립트 속성(Script Properties)에 저장하는 것이 보안상 안전합니다.
---
## 4. 트리거 설정 계획
주기적 실행을 위해 시간 기반 트리거를 설정하게 됩니다. 5분, 10분, 15분 등 원하는 주기를 미리 정해두세요.
---
이 정보들이 준비되면 스크립트 작성을 시작할 수 있습니다. 준비되면 말씀해주세요!
바이브 코딩을 하면서 주의할 점
이번에 처음으로 외부 API 와 연동을 하는데, 외부 API를 사용하기 위해서 APl token을 사용하는데, 이 정보는 코딩 에이전트 채팅 창에 전달하면 안 된다.
내가 하고 싶은 워크플로를 잘 정리해서 ChatGPT, Claude에게 전달해서 효과적으로 진행하기 위한 프롬프트를 작성해달라고 하자.
우리가 앞서 준비한 환경설정이면 쉽게 구현 및 적용이 가능할 것이라 생각한다. 메일 발송 자동화가 궁금하다면 이메일 대량 발송은 무서워 (미리 보기)도 함께 보면 좋고, 카카오톡 연동까지 확장하고 싶다면 카카오톡으로 알림 보내기를 참고하자.
나는 적용 완료!
나는 아래 내용을 그대로 적용하지 않았지만, 흐름이 적절한지만 체크하고 큰 무리가 없으면 그대로 진행하고, 문제가 발생하면 그때그때 해결하는 방법으로 접근하고 있다.
Claude 가 작성한 Gmail → Jira 자동화 바이브 코딩 프롬프트 가이드
한 번에 전체를 요청하기보다 기능 단위로 나눠서 진행하면 오류를 줄이고 디버깅도 쉬워집니다.
1단계: 프로젝트 설정 및 기본 구조
프롬프트 예시
Google Apps Script로 Gmail → Jira 자동화를 만들려고 해.먼저 프로젝트의 기본 구조를 잡아줘.Script Properties에 저장할 설정값: Jira 도메인, 이메일, API 토큰, 프로젝트 키, 이슈 타입이 설정값들을 읽어오는 유틸리티 함수메인 실행 함수의 뼈대로깅을 위한 기본 구조아직 실제 로직은 구현하지 말고 구조만 잡아줘.
2단계: Gmail 라벨 감지 및 메일 조회
프롬프트 예시
이제 Gmail에서 특정 라벨이 붙은 메일을 찾는 기능을 추가해 줘.요구사항:jira' 라벨이 붙어있고, 'jira-done' 라벨은 없는 메일만 조회스레드가 아닌 개별 메시지 단위로 처리해야 해라벨이 존재하지 않을 경우 에러 처리 필요조회된 메일에서 제목, 본문(HTML과 Plain text 모두), 발신자 정보 추출GAS의 GmailApp 서비스를 사용해 줘.
3단계: 첨부파일 처리
프롬프트 예시
메일의 첨부파일을 처리하는 기능을 추가해 줘.요구사항:Gmail Advanced Service(Gmail API)를 사용해야 해첨부파일의 이름, MIME 타입, 바이너리 데이터를 추출인라인 이미지와 일반 첨부파일 구분첨부파일이 없는 경우도 정상 처리되어야 해Advanced Gmail Service 활성화가 필요하다면 그 방법도 알려줘.
4단계: Jira 티켓 생성
프롬프트 예시
Jira Cloud REST API v3를 사용해서 이슈를 생성하는 기능을 만들어줘.요구사항:Basic Auth 사용 (이메일 + API 토큰을 Base64 인코딩)티켓 제목은 메일 제목, 설명은 메일 본문설명에 원본 발신자 정보 포함본문이 HTML인 경우 Jira의 ADF(Atlassian Document Format) 또는 마크다운으로 변환 고려API 호출 실패 시 에러를 throw 하고 로깅생성된 이슈의 키(예: PROJ-123)를 반환해 줘.
5단계: 첨부파일 업로드
프롬프트 예시
생성된 Jira 이슈에 첨부파일을 업로드하는 기능을 추가해 줘.요구사항:Jira REST API의 /rest/api/3/issue/{issueKey}/attachments 엔드 포인트 사용multipart/form-data 형식으로 전송GAS에서 Blob을 사용한 파일 업로드 처리X-Atlassian-Token: no-check 헤더 필수여러 첨부파일을 순차적으로 업로드개별 파일 업로드 실패 시에도 나머지는 계속 진행하고 실패 목록 반환
6단계: 라벨 변경 및 완료 처리
프롬프트 예시
처리 완료된 메일의 라벨을 변경하는 기능을 추가해 줘.요구사항:'jira' 라벨 제거'jira-done' 라벨 추가Jira 티켓 생성이 성공한 경우에만 라벨 변경첨부파일 업로드가 부분 실패해도 티켓이 생성됐으면 라벨 변경 진행라벨 변경 실패 시 다음 실행에서 중복 처리되지 않도록 주의해 줘.
7단계: 통합 및 트리거 설정
프롬프트 예시
모든 기능을 통합해서 메인 함수를 완성하고, 시간 기반 트리거를 설정하는 방법을 알려줘.요구사항:10분마다 실행되는 트리거실행 시간 6분 제한을 고려해서 한 번에 처리할 메일 수 제한 (최대 10개)전체 실행 결과를 요약해서 로깅처리된 메일 수, 성공/실패 건수, 생성된 티켓 목록 포함
불러오는 중...