오늘 앱시트와 앱스스크립트를 모두 사용하여 처음으로 간단한 기능을 회사에서 도입했다
사실 해당 기능 필요성을 느껴서 여러 번 시도했는데, 코드에는 이상이 없는데 안되어서 고민했는데
오늘 드디어 성공해서 업무에도 활용했다
1. 현재 문제점
1) 우리 회사에서는 배송지연이 되는 제품이 있으면 고객에게 배송지연 문자를 보내고 있다
2) 문자 내용에 거래처가 없어서 예를 들어 '무신사'와 '네이버 스마트스토어'에서 구매한 고객은 어디에서 구매한 제품이 배송지연에 해당하는지 헷갈릴 수 있다
3) 실제로 해당 내용으로 고객 항의도 인입되어서 문제 해결의 필요성 느낌
4) 한 가지 더 문제가 있는데, 지금 내부용으로 거래처를 표기해 두어서(예: 자사몰을 makeshop으로 표기, 토스를 비바퍼블리카로 표기된 상황) 해당 건까지 자동으로 수정이 필요한 상황 / 내부용으로 보이면 고객들이 알아보기 쉽지 않기 때문이다
2. 해결방법
2-1. 앱시트
1) 앱시트에 판매처 카테고리를 추가
2) 앱시트 내 문자 발송 기능-문자내용에 판매처를 추가한다
- 앱시트는 특정 형식이 있어서 이를 준수하여 작성한다(앞 뒤로 콤마(,) 넣고 판매처 불러오기 진행해야 인식함)
3) 잘되는지 테스트 진행
2-2. 내부 논의
1) 거래처를 어떻게 보기 좋게 바꿀지 문서 정리해서 내부 컨펌 진행
- 예: 비바퍼플리카를 '토스'로 바꿔서 고객에게 안내 문자 보내려고 한다고 내부 컨펌받기
2-3. 앱스스크립트
1) 도입하려는 시트에 진입 - 앱스스크립트 열기 - 주문처를 변경하는 코드 작성 - 트리거 설정
2) 작성한 코드 공유
// 스프레드시트 편집 이벤트를 처리하는 함수
function onEdit(e) {
try {
var sheet = e.source.getActiveSheet();
var editedRange = e.range;
// '오늘' 시트의 A열(1열)이 수정되었을 때만 실행
if (sheet.getName() === '오늘' && editedRange.getColumn() === 1) {
var editedValues = editedRange.getValues(); // 수정된 셀의 값
var numRows = editedValues.length;
// 각 값을 trim()하여 앞뒤 공백 제거 및 변환 처리
var updatedValues = editedValues.map(function(row) {
var value = row[0];
return determineSalesChannel(value.trim());
});
// A열(1열)의 값만 업데이트
for (var i = 0; i < numRows; i++) {
var originalValue = editedValues[i][0];
var updatedValue = updatedValues[i];
if (updatedValue !== originalValue) {
sheet.getRange(editedRange.getRow() + i, 1).setValue(updatedValue);
}
}
}
} catch (error) {
console.error('Error occurred: ' + error);
}
}
// 거래처명을 변환하는 함수, 회사명 내가 노출되지 않게 지금 변경함
function determineSalesChannel(value) {
var channelMap = {
'주식회사 무신사': '무신사',
'스마트스토어': '네이버',
'현대H몰': '현대H몰',
'지마켓': '지마켓',
'쿠팡': '쿠팡',
'MakeShop': '000스토어',
'SSG신세계': 'SSG신세계',
'000_에이블리': '에이블리',
'000몰_스마트스토어': '네이버',
'롯데하이마트㈜_오프라인': '롯데하이마트',
'000_옥션': '옥션',
'000_롯데ON': '롯데ON',
'000_11번가': '11번가',
'골마켓 주식회사': '골마켓',
'주식회사 죤파이브': '죤파이브',
'000_GS샵': 'GS샵',
'주식회사 현대이지웰': '현대이지웰',
'(주)신세계면세점 명동점': '신세계면세점',
'000_1300K': '1300K',
'(주)비바리퍼블리카': '토스',
'000_인터파크': '인터파크',
'000_삼성카드쇼핑': '삼성카드쇼핑',
'와디즈플랫폼_000팀': '와디즈플랫폼',
'000_29cm': '29cm',
// 필요에 따라 추가 거래처명에 대한 매핑 추가
};
// 거래처명 변환
var convertedValue = channelMap[value];
return convertedValue !== undefined ? convertedValue : value;
}
- 판매처에 해당하는 열에 새로운 내용이 입력되면 바꾼 간단한 거래처로 변경되게 하는 코드를 작성하여 도입했다
3. 개선 후 상황
1) 데이터를 입력하면 자동으로 거래처가 고객님이 알기 쉽게 바뀌고
2) 문자 내용에 자동으로 해당 거래처가 추가되어서 내용이 입력된다
4. 후기
그동안 앱시트/앱스스크립트 각각 작업은 해봤어도 두 가지를 모두 사용해서 기능을 도입한 것은 처음이다
누가 시킨 프로젝트가 아니라 내가 업무를 하면서 필요성을 느껴서 작업한 것이라 더 뿌듯하다
팀원, 팀장님도 잘했다고 하셔서 기분이 좋다 ㅎㅎ
'프로그래밍 > 프로젝트' 카테고리의 다른 글
소속팀 이름 자동화(w. apps script) (0) | 2024.05.24 |
---|---|
거래처별 문자 내용 생성 자동화(Apps script 활용) (0) | 2024.05.16 |
주말 날짜 계산하여 데이터 값 도출(feat.Apps script) (0) | 2024.04.08 |
공개적으로 칭찬받은 썰 (0) | 2024.04.04 |
프로젝트 일정 1초만에 만드는 툴 공유(구글시트) (0) | 2024.03.20 |
댓글