[인프콘 2023] 구글 Apps Script와 ChatGPT로 많은 동료들 생산성 향상 시킨 썰

Jeongho·2024년 1월 13일
0

인프콘 2023

목록 보기
2/3
post-thumbnail

귀찮지만 중요한 일

메일 예시

어떻게 처리하나?

  1. Gmail 열기
  2. 담당자 이메일 추가
  3. 작성해둔 템플릿을 본문에 넣음
  4. 거래처 명 등 수정
  5. 발송

얼마나 걸릴까?

  • 보수적으로 접근
  • 1개당 5분
  • 10개 업체 50분
  • 100개 업체 500분
  • 500분 = 8시간 20분

현재 상황

  • 거래처 이메일 주소는 모두 알고 있음
  • 거래처 명도 알고 있음
  • 보내야하는 메일 내용도 비슷함
    • 이미 템플릿은 작성된 상태
  • Google Workspace(구 G Suite) 사용 중

생각난 방법

  • 스프레드시트에 이메일과 거래처 명을 넣고
  • 템플릿 내용의 일부를 변경하여
  • 각각에게 이메일을 발송한다
  • Google Apps Script로 가능할듯!

Apps Script

function sendEmail() {
	const ss = SpreadsheetApp.getActiveSpreadsheet()
    const sheet1 = ss.getSheetByName('list'); // 이메일 보낼 사람들 목록이 들어간 시트명!
  	const sheet2 = ss.getSheetByName('template'); // 이메일 내용이 들어간 시트명!
  	const subject = sheet2.getRange(2, 1).getValue(); // 이메일 제목 추출
  	const n = sheet1.getLastRow(); // 이메일 보낼 명단이 전체 몇 명인지 확인
  
  	for (let i = 2; i < n+1; i++){
    	// 이메일 주소는 2번째 옆에 있으니까 (i, 2)
      	const emailAddress = sheet1.getRange(i, 2).getValue();
      	// 이름은 첫번째 옆에 있으니까 (i, 1)
      	const name = sheet1.getRange(i, 1).getValue();
      
      	// 이메일 내용이 될부분 추출
      	let message = sheet2.getRange(2,2).getValue();
      	// <name> 이라고 써진 부분을 실제 이름으로 갈아치우는 코드!
      	message = message.replace('<name>', name);
      
      	// 메일 가랏!
      	MailApp.sendEmail(emailAddress, subject, message, {cc: "totuworld@gmail.com"})
    }
}

새로운 요구사항

업체별로 다른 첨부파일을 보내고 싶어요!

생각난 방법

  • 스프레드시트에 이메일과 거래처 명을 넣고
  • 템플릿 내용의 일부를 변경하여
  • Google Drive에 업로드한 파일을 첨부하여
  • 각각에게 이메일을 발송한다

GPT의 도움을 받아보자!

구글 apps script에서 이메일을 보낼 때 sendEmail의 inlineImages를 통해 구글 드라이브에 업로드한 이미지를 보낼 수 있는 코드를 짜줘.

body의 특정 부분에 이미지를 넣고 싶으면 어떻게 수정해?

attachments를 이용해서 구글 Drive에 있는 파일을 첨부 파일로도 함께 보내고 싶어.

위 코드에서 body의 특정 부분에 이미지를 넣고 싶으면 어떻게 수정해?

이 4가지 질문으로 쓸만한 코드를 얻었습니다!

프로그래밍을 이루는 3가지

  1. 문제의 이해
  2. 해결방법의 제시
  3. 해결방법의 표현 => ChatGPT

이 3개중 하나라도 어렵다고 느낀다면 프로그래밍이 어렵다고 느껴집니다. 하지만 ChatGPT를 통해 이것을 해결할 수 있습니다.

Jira 티겟 만들기

Jira 티겟을 만들 때
컴포넌트도 넣고,
co worker도 지정하고,
watcher로 팀원들도 넣습니다.

스프린트 플래닝할 때 많은 티켓을 만든다!
작지만 누적되면 많아지는 자투리 시간!

자주 쓰는 내용은 고정한 채 제목만 바꿀 순 없나?

아래 주어진 url의 query params 중에서 summary 부분을 input text로 받아서 submit 버튼을 누르면 summary 부분에 결과를 넣어주는 html 파일을 만들어줘

=> 잘못된 결과 도출

이 코드는 input을 사용자로부터 받지 않잖아.
input을 사용해서 해당 내용으로 넣도록 바꿔줘.

=> 이번에는 전달할 url을 교체하는 부분이 없음

자 이코드는 내가 앞서 전해준 url을 치환하지 않아.
내가 예시로 줬던 url을 바탕으로 query params 부분의 summary를 교체하는 현태로 바꿔줘.

=> 쓸만한 코드 도출 후 복붙

마무리

영상을 요약하자면 개발자들이 자신이 하는 일 이외에도 주변에 관심을 두면 아주 간단하게 해결할 수 있는 문제들이 많으니 이러한 것들을 해결하고 함께 도우면서 살아가자! 라는 내용입니다. 사실 저도 회사에 다녔을 때 제가 회사의 유일한 개발자였기 때문에 프로그래밍을 통해 다양한 기능을 구현했었는데요. 그중에서 Apps Script를 사용해서 이메일을 보내는 기능도 있었기 때문에 해당 내용이 반갑게 다가왔습니다.

Reference

profile
주도적으로 문제를 정의하고 코드를 통해 해결합니다.

0개의 댓글