[Google App Script] ๊ตฌ๊ธ€ ์„ค๋ฌธ์ง€ ์ž‘์„ฑ ์•Œ๋ฆผ ์ž๋™ํ™”

2022. 11. 4. 17:18ใ†Programming Project ์ž‘์—…์‹ค

728x90
๋ฐ˜์‘ํ˜•

 

 

 

 

 

์ผ์ž˜๋Ÿฌ์˜ ๋น„๋ฐ€ ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ œ๋Œ€๋กœ ํŒŒํ—ค์น˜๊ธฐ:๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋กœ ์—‘์…€ ๋ฐŸ๊ณ  ์นผํ‡ดํ•˜์ž

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

๐Ÿš€ Google ์„ค๋ฌธ์ง€ ์ž‘์„ฑ ์•Œ๋ฆผ ์ž๋™ํ™”

    ๐Ÿ”ฝ  Google App Script

        ๐Ÿ“ฆ ๊ฐœ์š”

Google App script๋Š” Google Work Space Platform์—์„œ ๊ฐ€๋ฒผ์šด Application ๊ฐœ๋ฐœ์„ ์œ„ํ•ด Google์ด ๊ฐœ๋ฐœํ•œ Script Platform์ด์—์š”.

Google App Script๋Š” JavaScript 1.6์— ๊ธฐ๋ฐ˜์„ ๋‘๊ณ  ์žˆ์œผ๋‚˜, ECMA Script 5 API์˜ ํ•˜์œ„ ์ง‘ํ•ฉ ๋ฐ 1.7, 1.8์˜ ์ผ๋ถ€ ๊ธฐ๋Šฅ๋„ ํฌํ•จํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•ด์š”.

App Script Project๋Š” Google Infra์˜ Server Side๋กœ ์‹คํ–‰๋œ๋‹ค๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

Google์ด ๋งํ•˜๊ธธ Google Script๋Š” Google ์ œํ’ˆ๊ณผ Third Party Servie ๊ฐ„ Task๋ฅผ ์ž๋™ํ•˜๊ธฐ ์šฉ์ดํ•œ ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค๊ณ  ํ•œ๋‹ต๋‹ˆ๋‹ค.

๋˜ํ•œ, App Script๋Š” Google Drive์šฉ ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ์œ ์šฉํ•œ ๋„๊ตฌ์ด๊ธฐ๋„ ํ•ด์š”.

 

 

 

    ๐Ÿ”ฝ  ์‹œ์ž‘ํ•˜๊ธฐ

        ๐Ÿ“ฆ ์ดˆ๊ธฐ๊ตฌ์„ฑ

์ฃผ๋‹ˆํ•˜๋ž‘์€ ์ข‹์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด ๋ฉ‹์ง„ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•ด Side Project๋ฅผ ํ•˜๊ณ  ์žˆ๊ณ , Crew ๋“ค์ด ๋” ๋งŽ์€ ๊ฒƒ์„ ๊ฒฝํ—˜ํ•˜๊ณ , ๊ณต์œ ํ•˜๊ธธ ๋ฐ”๋ผ๋Š” ๊ฒƒ์ด์—์š”.

๊ทธ๋ž˜์„œ Sub Project๋ฅผ ์ค€๋น„ํ•˜๊ณ  ์žˆ๊ณ , ์ด๋ฅผ ํ†ตํ•ด ๊ณ ๊ฐ์—๊ฒŒ ์„ค๋ฌธ์ง€๋ฅผ ๋ฐ›๋Š”๋‹ค๋ผ๋Š” ๊ฐ€์ •์„ ํ•˜๊ณ , ์ด๋ฅผ Service ํ•˜๊ธฐ ์œ„ํ•œ Model์„ ์ค€๋น„ํ•˜๊ธฐ ์œ„ํ•ด Google ์„ค๋ฌธ์ง€๋ฅผ ์ด์šฉํ•ด์„œ ๊ณ ๊ฐ์—๊ฒŒ ์–ด๋–ค ๋ฌธ์˜๋‚˜, ์š”์ฒญ์„ ๋ฐ›๊ฒŒ ๋˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด Google ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์— ๊ฐ’์ด ์ €์žฅ์ด ๋˜๋ฉด ์ด๋ฅผ Slack์œผ๋กœ ์•Œ๋ ค์ฃผ๋ ค๊ณ  ํ•ด์š”.

๊ตฌ๊ธ€ ์„ค๋ฌธ์ง€


์ตœ์ดˆ ์ฃผ๋‹ˆํ•˜๋ž‘์€ ์œ„์™€ ๊ฐ™์ด Google ์„ค๋ฌธ์ง€๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.



ํ•ด๋‹น ์„ค๋ฌธ์ง€๊ฐ€ ์ž‘์„ฑ์ด ๋˜๋ฉด ์ž๋™์œผ๋กœ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ์ž…๋ ฅ๊ฐ’์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์ด ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.



๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ


์œ„์™€ ๊ฐ™์ด ์ž๋™์œผ๋กœ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๊ฐ€ ๋งŒ๋“ค์–ด์กŒ๊ณ , ๊ฐ๊ฐ์˜ ๊ฐ’์„ ์—ด์— ๋ฐ›์„ ์ˆ˜ ์žˆ๋„๋ก ์ฒซ๋ฒˆ์งธ ํ–‰์— ์ค€๋น„๊ฐ€ ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์–ด์š”.






 

 

 

        ๐Ÿ“ฆ ์ดˆ๊ธฐ ๊ตฌ์„ฑ

์ฃผ๋‹ˆํ•˜๋ž‘์€ ์œ„์™€ ๊ฐ™์ด ๊ฐ’์ด ์ž…๋ ฅ์ด ๋˜๋ฉด Slack์œผ๋กœ ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์‹ถ์€ ๊ฒƒ์ด์—์š”.

์ด๋Ÿฐ ๊ฒƒ๋“ค์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋‹ˆ ์ •๋ง ๊ฐœ๋ฐœ์€ ๋„ˆ๋ฌด ์žฌ๋ฐŒ๋Š” ๊ฒƒ์ด์—์š”.


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด ํ™•์žฅ ํ”„๋กœ๊ทธ๋žจ์„ ์„ ํƒํ•œ ๋’ค Apps Script๋ฅผ ์„ ํƒํ•ด ์ค๋‹ˆ๋‹ค.




๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด JavaScript ๋ฌธ๋ฒ•์„ ํ†ตํ•ด Coding ํ•  ์ˆ˜ ์žˆ๋Š” ์ฐฝ์ด ๋‚˜์˜ฌ๊ฑฐ์—์š”.









 

        ๐Ÿ“ฆ Trigger ๊ตฌ์„ฑ

Initalize()


์ตœ์ดˆ ์ฃผ๋‹ˆํ•˜๋ž‘์€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ๊ฐ’์ด ์ž…๋ ฅ๋˜๋ฉด ์ž๋™์œผ๋กœ
Trigger๊ฐ€ ์ž‘๋™ํ•˜์—ฌ ์ง€์ •๋œ Function์ด ์ž‘๋™ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ž‘์„ฑํ•ด ์ฃผ์—ˆ์–ด์š”.

Initalize()๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ๊ณ , ProjectTriggers ํ•จ์ˆ˜๋ฅผ ๋™์ž‘ ์‹œ์ผœ ๊ทธ ๊ฐ’์„ triggers ๋ณ€์ˆ˜์— ๋‹ด๋„๋ก ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

์ด ์ „์— ์ž‘๋™ํ•˜๊ณ  ์žˆ๋Š” Trigger๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ด Trigger๋ฅผ ์ง€์›Œ์ฃผ์–ด์•ผ ํ•ด์š”.
4 ~ 6๋ฒˆ์งธ ๋ฐ˜๋ณต๋ฌธ์ด ๊ทธ ์ž‘์—…์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด์—์š”.

๋ณธ๊ฒฉ์ ์œผ๋กœ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ๊ฐ’์ด ์ž…๋ ฅ์ด ๋˜๋ฉด ์–ด๋–ค ํ•จ์ˆ˜๋ฅผ ์ž‘๋™ ์‹œ์ผœ์ฃผ์–ด์•ผ ํ•ด์š”.

๊ทธ๋Ÿฌ๊ธฐ ์œ„ํ•ด 8๋ฒˆ์งธ ์ค„์—์„œ ์ƒˆ๋กœ์šด Trigger๋ฅผ ๋งŒ๋“œ๋Š”๋ฐ, ์ด ๋•Œ ์†Œ๊ด„ํ˜ธ ์•ˆ์— ์ž‘๋™ ์‹œํ‚ฌ ํ•จ์ˆ˜ ์ด๋ฆ„์„ ๋„ฃ์–ด์ฃผ๋ฉด ๋˜์š”.

์ด๊ฒƒ์€ Google App Script์˜ Class SpreadsheetTriggerBuilder๋ฅผ ์ด์šฉํ•˜๋Š” ๊ฒƒ์ด๊ณ ,
์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์œ„ํ•œ ๋นŒ๋”์—์š”.

์ฃผ์š” ํ•จ์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์•„์š”.

Function Name Return Type Contants
create() Trigger ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐ˜ํ™˜
onChange() SpreadsheetTirggerBuilder ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์˜ ๋‚ด์šฉ ๋˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ณ€๊ฒฝ๋  ๋•Œ ์‹คํ–‰๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ์ง€์ •
onEdit() SpreadsheetTirggerBuilder ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ
์‹คํ–‰ํ•  ํŠธ๋ฆฌ๊ฑฐ ์ง€์ •
onFormSubmit() SpreadsheetTirggerBuilder ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ์–‘์‹์ด ์ œ์ถœ๋˜๋ฉด
์‹คํ–‰๋˜๋Š” ํŠธ๋ฆฌ๊ฑฐ ์ง€์ •
onOpen() SpreadsheetTirggerBuilder ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ์—ด ๋•Œ ์‹คํ–‰ํ•  ํŠธ๋ฆฌ๊ฑฐ ์ง€์ •



9๋ฒˆ์งธ ์ค„์—์„œ forSpreadsheet๋Š” ์ง€์ •๋œ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ฆ‰, ์†Œ๊ด„ํ˜ธ ์•ˆ์— ์ž…๋ ฅ๋œ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ์—ฐ๊ฒฐ๋œ SpreadsheetTriggerBuilder๋ฅผ ๋งŒ๋“ค๊ณ  ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ํ•ด์š”.


์ถœ์ฒ˜ : https://developers.google.com/apps-script/reference/script/trigger-builder#forSpreadsheet(Spreadsheet)



๊ทธ๋ฆฌ๊ณ , SpreadsheetApp.getActiveSpreadsheet()๋Š” ํ˜„์žฌ ์‚ฌ์šฉ ์ค‘์ธ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜,
์—†์„ ๊ฒฝ์šฐ null์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋Š” ํ•จ์ˆ˜์—์š”. 

์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์˜ Context์—์„œ ์‹คํ–‰๋˜๋Š” ํ•จ์ˆ˜๋Š” ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜์—ฌ
ํ•ด๋‹น Spreadsheet ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ๋„์™€ ์ค€๋‹ต๋‹ˆ๋‹ค.


์ถœ์ฒ˜ : https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactivespreadsheet



์ฆ‰, ์ฃผ๋‹ˆํ•˜๋ž‘์€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ์–ด๋–ค ๊ฐ’์ด ์ผ๋ ฅ์ด ๋˜๋ฉด ์ž๋™์œผ๋กœ ํŠธ๋ฆฌ๊ฑฐ๊ฐ€ ์ž‘๋™ ๋˜๋„๋ก ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.




 


๋ณธ๊ฒฉ์ ์œผ๋กœ Trigger ์ฒ˜๋ฆฌ๋ฅผ ํ•ด๋ณผ๊ฒŒ์š”.


ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค„๊ฒŒ์š”.





์ตœ์ดˆ Trigger๊ฐ€ ์ž‘๋™ํ•˜๋ฉด ํ˜ธ์ถœํ•  ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•ด ์ฃผ์–ด์•ผ ํ•ด์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ ์—ฌ๋Ÿฌ ํ•จ์ˆ˜๋ฅผ ๋‚˜๋ˆ  ๋†“์•˜๊ณ , ์ฒซ ์‹œ์ž‘ ํ•จ์ˆ˜๋ฅผ mainFunction()์œผ๋กœ ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์„ ํƒ์„ ํ–ˆ์–ด์š”.

๊ทธ๋ฆฌ๊ณ , ์ด๋ฒคํŠธ ์œ ํ˜•์€ ์–‘์‹ ์ œ์ถœ ์‹œ๋กœ ํ•ด์•ผ ์„ค๋ฌธ์ง€๊ฐ€ ์ž‘์„ฑ์ด ๋˜๋ฉด Trigger๊ฐ€ ์ž‘๋™๋  ๊ฒƒ์ด์—์š”.

Trigger๊ฐ€ ์‹คํŒจํ•˜๋ฉด ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ๋ฐ›๋Š”๊ฒŒ ์ข‹๊ฒ ์–ด์š”!


 

 

        ๐Ÿ“ฆ mainFunction()

๋ณธ๊ฒฉ์ ์œผ๋กœ Google App Script๋ฅผ ๊ฐ€์ง€๊ณ  ๋†€์•„ ๋ณผ๊ฒŒ์š”.

๋ฐ˜์‘ํ˜•


์ตœ์ดˆ ๋ณ€์ˆ˜๋“ค์„ ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”.

15๋ฒˆ์งธ ์ค„์— getActiveSheet()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด ์นœ๊ตฌ๋Š” ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์—์„œ ํ™œ์„ฑ ์‹œํŠธ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ํ•จ์ˆ˜๋กœ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์˜ ํ™œ์„ฑ ์‹œํŠธ๋Š” ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ UI์— ํ‘œ์‹œ๋˜๊ณ  ์žˆ๋Š” ์‹œํŠธ๋ฅผ ๋งํ•ด์š”.

์ถœ์ฒ˜ : https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet-app#getactivesheet


๊ทธ๋Ÿฐ ๋’ค 16๋ฒˆ์งธ ์ค„์— getDataRange()๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.
์ด ์นœ๊ตฌ๋Š” Range Data๊ฐ€ ์žˆ๋Š” ์ฐจ์›์— ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๋ฐ, Sheet.getLastColumn(), Sheet.getLastRow()๋กœ
์ง€์ •๋œ Range๋ฅผ ๋งŒ๋“œ๋Š” ๊ฒƒ๊ณผ ๋™์ผํ•œ ๋‚ด์šฉ ์ด์—์š”.

์ถœ์ฒ˜ : https://developers.google.com/apps-script/reference/spreadsheet/sheet#getDataRange()

 

17๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ 19๋ฒˆ์งธ ์ค„์€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— ๊ฐ ๊ฐ’์„ ํŽธํ•˜๊ฒŒ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด
๋งˆ์ง€๋ง‰ ํ–‰, ๋งˆ์ง€๋ง‰ ์—ด, ์ฒซ๋ฒˆ์งธ ์—ด์„ ๊ณ„์‚ฐํ•˜์—ฌ ๋ณ€์ˆ˜์— ๋‹ด๋„๋ก ํ•˜์˜€์–ด์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์€ ์ด๋ฅผ ํ†ตํ•ด Slack์— ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์‹ถ๊ธฐ ๋•Œ๋ฌธ์— ์ฐจํ›„์— Slack Web Hook URL์„ ๋ฐ›์•„ ์ž…๋ ฅ๋„ ํ•ด์ค„๊ฑฐ์—์š”.

 


์ฃผ๋‹ˆํ•˜๋ž‘์€ ํ•ด๋‹น Program Version์„ ๊ด€๋ฆฌํ•˜๊ณ  ์‹ถ์–ด์„œ Version ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๊ณ ,

Slack์ด๋‚˜, Email ์ „์†ก ์ค‘ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ๊ทธ๊ฒƒ ๋˜ํ•œ Slack์— ์•Œ๋ฆผ์„ ๋ฐ›๊ณ  ์‹ถ์–ด์„œ ๊ฐ๊ฐ์˜ ๋ฌธ์ œ ๋‚ด์šฉ์„ ๋‹ด์„ responseValue[] ๋ฅผ ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋ฆฌ๊ณ , Slcak์— ๋ณด๋‚ผ ์ฒซ ๋ฌธ์žฅ์„ ๋ฏธ๋ฆฌ slackMessage ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ฃผ์—ˆ์–ด์š”.


์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ๋Š” ํ–‰๊ณผ ์—ด๋กœ ์ด๋ค„์ ธ ์žˆ๊ณ , ์ด ์•ˆ์˜ ๊ฐ’์„ ์ฒ˜๋ฆฌํ•˜๋ ค๋ฉด ๋ฐ˜๋ณต๋ฌธ์ด ํ•„์š”ํ•œ ๊ฒƒ์ด์—์š”.

ํ•ด๋‹น ๋‚ด์šฉ์„ ์ฒ˜๋ฆฌํ•  spreadsheetLoop()๋ฅผ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ๊ณ ,
๊ทธ ์•ˆ์— activeSheet, firstCol ๋“ฑ๋“ฑ์˜ ๋ณ€์ˆ˜๋“ค์„ ์ „๋‹ฌํ•ด ์ฃผ์—ˆ์–ด์š”.

ํ•ด๋‹น ์ฒ˜๋ฆฌ๊ฐ€ ๋๋‚ฌ์„ ๋•Œ, ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์œผ๋ฉด ๊ทธ๊ฒƒ์„ ํ™•์ธํ•˜๋Š” Logic์ธ errorCheck()๋„ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.



 

 

 

 

        ๐Ÿ“ฆ spreadSheetsLoop()

728x90


์•ž์—์„œ ์ด์•ผ๊ธฐ ํ–ˆ๋˜ ๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ ํ•จ์ˆ˜์—์š”.

1ํ–‰ ๋‚ด์šฉ


๋ฐ˜๋ณต๋ฌธ ์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•ด ์ตœ์ดˆ 1ํ–‰์€ ๊ฐ๊ฐ์˜ ๋‚ด์šฉ์— ์ œ๋ชฉ์ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— 2ํ–‰ ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•ด row ๋ณ€์ˆ˜๋ฅผ 2๋กœ ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค ๋งˆ์ง€๋ง‰ ํ–‰๋ณด๋‹ค ๋ฐ˜๋ณต๋ฌธ์˜ ํ–‰ ๊ฐ’์ด ์ž‘์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ์—ˆ์–ด์š”.

timeStamp๋ผ๋Š” ๋ณ€์ˆ˜๋Š” ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์˜ ํƒ€์ž„์Šคํ…œํ”„ ์ฆ‰, ํ•ด๋‹น ์„ค๋ฌธ์ง€ ์ž‘์„ฑํ•œ ์ผ์‹œ๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜์—์š”.

45๋ฒˆ์žฌ ์ค„ if๋ฌธ์€ ํ•ด๋‹น ํƒ€์ž„์Šคํƒฌํ”„ ๊ฐ’์ด ์—†๋‹ค๋ฉด ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๋‚ด์šฉ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ˜๋ณต๋ฌธ์„ ๋ฉˆ์ถ”๊ฒŒ ํ•ด ์ค€ ์žฅ์น˜์—์š”.

49๋ฒˆ์งธ ์ค„์— timeStamp ๋ณ€์ˆ˜์˜ ๊ฐ’์„ GMT+9 (๋Œ€ํ•œ๋ฏผ๊ตญ ํ‘œ์ค€์‹œ)์— ๋งž์ถ”์–ด
yyyy๋…„MM์›”dd์ผ HH(24์‹œ๊ฐ„์ œ)MM๋ถ„ ํ˜•์‹์œผ๋กœ ๋ฐ›๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.

๋งŒ์•ฝ ์‹œ๊ฐ„์„ 12์‹œ๊ฐ„์ œ๋กœ ๋ฐ›๊ณ  ์žˆ๋‹ค๋ฉด HH๋ฅผ hh๋กœ ๋ฐ”๊พธ์–ด ์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

์ด๋ ‡๊ฒŒ ํ•˜๋Š” ์ด์œ ๋Š” timeStamp๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์ด ๋“ค์–ด์˜ค๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

Sat Nov 05 2022 00:00:00 GMT+0900 (Korean Standard Time)Sat Dec 30 1899 04:28:32 GMT+0827 (Korean Standard Time)

๋งŒ์•ฝ ์œ„์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌ ํ•˜์ง€ ์•Š์œผ๋ฉด ๋‚˜์ค‘์— Slack์— ์•„๋ž˜์™€ ๊ฐ™์ด ๊ฐ’์ด ๋“ค์–ด ์˜ฌ๊ฑฐ์—์š”.






๋‹ค์Œ ๊ฐ๊ฐ์˜ ๋ณ€์ˆ˜๋“ค์€ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ ๋•Œ, ๊ฐ๊ฐ์˜ ํ–‰์—์„œ ๊ฐ ์—ด์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ๋ณ€์ˆ˜๋กœ ๋‹ด๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ค€ ๋ณ€์ˆ˜๋“ค์ด์—์š”.

์ด ์ค‘ For ๋ฌธ์„ ์ด์šฉํ•˜๋ฉด ๋ณ€์ˆ˜๋ฅผ ์ค„์ผ์ˆ˜๋Š” ์žˆ๊ฒ ์œผ๋‚˜, ์‹œ๊ฐ„ ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๊ธฐ ๋•Œ๋ฌธ์— ์œ„์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.


emailTest๋ผ๋Š” ๋ณ€์ˆ˜๋Š” ์ฐจ ํ›„ Email ๋ฐœ์†ก Test ๋•Œ, ์‹ ์ฒญ ๊ณ ๊ฐ์—๊ฒŒ ๋ฉ”์ผ์ด ๋ฐœ์†ก๋˜๋ฉด ์•ˆ๋˜๊ธฐ ๋•Œ๋ฌธ์—
๊ทธ๋Ÿฐ ๊ฒƒ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ค€ ๋ณ€์ˆ˜์—์š”.

์ด์ œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ๊ฐ ํ–‰์—์„œ ๊ฐ€์ ธ์˜จ ๊ฐ’๋“ค์„ Slack์œผ๋กœ ๋ณด๋‚ผ Message ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ค๋‹ˆ๋‹ค.

 


94๋ฒˆ์งธ ์ค„์—์„œ ์œ„์—์„œ ๋ฐ›์€ Slack Message๋ฅผ Slack์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜ sendSlack์„ ํ˜ธ์ถœํ•˜๊ณ , slack Web Hooks URL๊ณผ ๋ณด๋‚ผ Message, ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ URL, Program Version ์ •๋ณด๋ฅผ ๋‹ด์€ ๋ณ€์ˆ˜๋ฅผ ์ „๋‹ฌํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค ๋ฐ˜ํ™˜๊ฐ’์„ slackSendReturnValue ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

์ด ๋ณ€์ˆ˜๋Š” Slack์— Message๋ฅผ ๋ณด๋‚ด๋ฉด์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€ ํ™•์ธ์„ ํ•˜๊ธฐ ์œ„ํ•ด ์„ ์–ธํ•ด ์ค€ ๊ฒƒ์ด์—์š”.


95๋ฒˆ์งธ ๋ณ€์ˆ˜๋Š” ์‹ ์ฒญ ๊ณ ๊ฐ์—๊ฒŒ Mail์„ ๋ณด๋‚ด๋Š” Logic์—์„œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ๋‚ด์šฉ์„ ๋‹ด์•„ ์ฃผ๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜์—์š”.

97๋ฒˆ์งธ ๋ถ€ํ„ฐ 101๋ฒˆ์งธ๊นŒ์ง€ if๋ฌธ์€ ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— Email ๋ฐœ์†ก ์—ฌ๋ถ€ ๊ฐ’์ด undefined ์ด๊ฑฐ๋‚˜, ๋ฏธ๋ฐœ์†ก ์ด๋ผ๋Š” ๊ฐ’์ด ์žˆ๋‹ค๋ฉด Mail ๋ฐœ์†ก์„ ํ•˜๊ธฐ ์œ„ํ•ด ์กฐ๊ฑด๋ฌธ์„ ์ค€ ๊ฒƒ์ด์—์š”.



์œ„์™€ ๊ฐ™์ด ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์— Email ๋ฐœ์†ก ์—ฌ๋ถ€๋ฅผ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.

๋งŒ์•ฝ ์œ„์˜ ์กฐ๊ฑด๋ฌธ์— ๋งž๊ฒŒ ๋œ๋‹ค๋ฉด Mail ๋ฐœ์†ก ์ฒ˜๋ฆฌ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋˜๊ณ ,

๋ฐ˜ํ™˜๊ฐ’์„ emailSendReturnValue ๋ณ€์ˆ˜์— ๋‹ด์•„ ๋ฌธ์ œ ์—ฌ๋ถ€๋ฅผ ํ™•์ธ ํ•˜๋ ค๊ณ  ํ•ด์š”.

103๋ฒˆ์งธ ๋ฐฐ์—ด์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด ์ฃผ๋Š”๋ฐ, ์ด๋Š” Slack์—์„œ ๋ฌธ์ œ ๋‚ด์šฉ๊ณผ Mail ๋ฐœ์†ก ์‹œ์— ๋‚˜์˜จ ๋ฌธ์ œ๋“ค์„ ๋‹ด์•„
ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด ์ค€ ๊ฒƒ์ด์—์š”.

๊ทธ๋Ÿฐ ๋’ค 105 ~ 106๋ฒˆ์งธ ์ค„์— ๊ฐ๊ฐ์˜ ๋ฌธ์ œ ๋‚ด์šฉ์„ ํ•ด๋‹น ๋ฐฐ์—ด์— ๋ฐ›๋„๋ก ํ•˜๊ณ , ๊ทธ ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•ด ์ฃผ์—ˆ์–ด์š”.




 

 

        ๐Ÿ“ฆ Slack ๊ตฌ์„ฑํ•˜๊ธฐ

Slack์˜ Web Hook ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์ด์—์š”.


์ตœ์ดˆ ์œ„์™€ ๊ฐ™์ด Web Hook์„ ์—ฐ๋™ํ•  ์ฑ„๋„์„ ์šฐํด๋ฆญ ํ•œ ๋’ค ์ฑ„๋„ ์„ธ๋ถ€ ์ •๋ณด ๋ณด๊ธฐ๋ฅผ ์„ ํƒํ•ด ์ค„๊ฒŒ์š”.




์œ„์™€ ๊ฐ™์ด ํ†ตํ•ฉ์—์„œ ์•ฑ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค„๊ฒŒ์š”.

 


์œ„์™€ ๊ฐ™์ด incoming WebHooks๋ฅผ ์ฐพ๊ณ , ์„ค์น˜๋ฅผ ๋ˆŒ๋Ÿฌ ์ค๋‹ˆ๋‹ค.




Slack์— ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค„๊ฒŒ์š”.



์ฑ„๋„ ์„ ํƒ์—์„œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ์ฑ„๋„์„ ์„ ํƒํ•ด ์ฃผ์„ธ์š”.
๊ทธ๋Ÿฐ ๋’ค ์ˆ˜์‹  ์›นํ›„ํฌ ํ†ตํ•ฉ ์•ฑ ์ถ”๊ฐ€๋ฅผ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.



์ฃผ๋‹ˆํ•˜๋ž‘์€ ์œ„์™€ ๊ฐ™์ด ์„ค์ •์„ ํ•ด์ฃผ๋ ค๊ณ  ํ•ด์š”.

Web Hook URL์„ ์ž˜ ์ •๋ฆฌํ•ด ๋‘์–ด์•ผ ํ•ด์š”.

์„ค์ • ์ €์žฅ์„ ๋ˆŒ๋Ÿฌ์ค„๊ฒŒ์š”.



๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
Slack Incoming Web Hooks

 

 

 


์œ„์™€ ๊ฐ™์ด ์ฒ˜๋ฆฌ๋ฅผ ํ•œ ๋’ค ๋ณธ๊ฒฉ์ ์œผ๋กœ Slack์— Message๋ฅผ ๋‹ด๋‹นํ•  ํ•จ์ˆ˜๋ฅผ ๋ถ„์„ํ•ด ๋ณผ๊ฒŒ์š”.


117๋ฒˆ์งธ ์ค„์— Slack ์ฒ˜๋ฆฌ ์‹œ์— ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ๋‹ด์„ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค payload ๊ฐ์ฒด ์•ˆ์— text๋ผ๋Š” Key๋กœ Value๋Š” slackMessage๋ฅผ ๋„ฃ์–ด ์ฃผ์—ˆ์–ด์š”.

option์ด๋ผ๋Š” ๊ฐ์ฒด ์•ˆ์—๋Š” Slack์— ๋‚ด์šฉ์„ ๋ณด๋‚ผ ๊ฒƒ์ด๊ธฐ ๋•Œ๋ฌธ์— Http Method๋ฅผ POST๋กœ ์ง€์ •ํ•ด ์ฃผ๊ณ , contentType์„ json Type์œผ๋กœ ๋ณด๋‚ผ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌ ํ•ด ์ค€ ๋’ค ์‹ค์ œ Payload ๊ฐ’์„ JSON์œผ๋กœ ๋ฐ”๊พธ์–ด ์ €์žฅํ•ด ์ฃผ์—ˆ์–ด์š”.

129๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ 133๋ฒˆ์งธ ์ค„๊นŒ์ง€ ์‹ค์ œ๋กœ Slack์— Message๋ฅผ ๋ณด๋‚ด๋Š” Logic์ด์—์š”.
์ด ๊ณณ์—์„œ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— try - catch๋กœ ๋ฌถ์–ด ์ฃผ์—ˆ์–ด์š”.

๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์œ„์—์„œ ๋งŒ๋“ค์—ˆ๋˜ slackErrorCheck ๋ณ€์ˆ˜์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€๋ฅผ ๋‹ด๋„๋ก ํ•˜์˜€์–ด์š”.

๊ทธ๋ฆฌ๊ณ , ๋ฐ˜ํ™˜๊ฐ’์œผ๋กœ ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•ด ์ฃผ์—ˆ๋‹ต๋‹ˆ๋‹ค.



 

 

        ๐Ÿ“ฆ ์ž๋™์œผ๋กœ Mail ๋ณด๋‚ด๋„๋ก ํ•˜๊ธฐ

์ด๋ฒˆ์—” Gmail์„ ํ†ตํ•ด Mail์ด ๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ๋ณผ๊ฒŒ์š”.

๋จผ์ € Email ์ œ๋ชฉ์„ ๋„ฃ๊ธฐ ์œ„ํ•ด emailSubject ๋ณ€์ˆ˜์— ๋‚ด์šฉ์„ ๋„ฃ์–ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋ฆฌ๊ณ , Email ๋ณธ๋ฌธ ๊ฐ’์„ emailBody์— ๋„ฃ์–ด ์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค.

161๋ฒˆ์งธ ์ค„์— ๋ณ€์ˆ˜๋Š” Mail์„ ๋ณด๋‚ด๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ๋ฐ›๊ธฐ ์œ„ํ•œ ๋ณ€์ˆ˜์—์š”.

163 ~ 165๋ฒˆ์งธ ์ค„์€ Mail ๋ฐœ์†ก Test ์‹œ์— ๋ณ€์ˆ˜๋ฅผ ํ™•์ธํ•ด์„œMail ๋ฐœ์†ก Test๋ผ๋ฉด
์ฃผ๋‹ˆํ•˜๋ž‘์—๊ฒŒ Mail์ด ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.


๊ทธ๋Ÿฐ ๋’ค Try catch ๋ฌธ์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ๋Œ€๋น„๋ฅผ ํ•ด ์ฃผ๊ณ , try ๋ฌธ์„ ํ†ตํ•ด Mail์ด ๋ฐœ์†ก๋˜๋Š” Logic์„ ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.

169๋ฒˆ์งธ ์ค„์—๋Š” ํ•ด๋‹น Mail์ด ๋ณด๋‚ด์ง€๋ฉด ์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ ํ•ด๋‹น ํ–‰ 16๋ฒˆ์งธ ํ–‰์—
'๋ฐœ์†ก'์ด๋ผ๋Š” Data๊ฐ€ ์ž๋™์œผ๋กœ ๋‚จ๊ฒŒ ํ•ด ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋ž˜์•ผ ๋‹ค์Œ ์‹คํ–‰ ๋•Œ๋„ Mail์ด ๋™์ผ์ธ์—๊ฒŒ ๋ฐœ์†ก๋˜๋Š” ๊ฑธ ๋ง‰์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.

๋งŒ์•ฝ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋ฉด 161๋ฒˆ์งธ ์ค„ ๋ณ€์ˆ˜์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ๋Š”์ง€๋ฅผ ๋‹ด๋„๋ก ํ•ด ์ฃผ๊ณ , ์ด๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋„๋ก ์ฒ˜๋ฆฌํ•ด ์ฃผ์—ˆ์–ด์š”.




 

        ๐Ÿ“ฆ Error Check


Slack๊ณผ Mail ๋ฐœ์†ก ์‹œ์— ์–ด๋–ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋˜๋ฉด ๊ทธ ๋ฌธ์ œ๋ฅผ ๋‹ค์‹œ Slack์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์ „ Logic์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜์—์š”.

์ฃผ๋‹ˆํ•˜๋ž‘์ด ํ•ด๋‹น Message์— ๋‚จ๊ธฐ๊ณ  ์‹ถ์€ ๋‚ด์šฉ์„ ๋จผ์ € ๋ณ€์ˆ˜์— ๋‹ด์•„ ์ฃผ๊ณ , ์œ„์—์„œ ํ•ด๋‹น ๊ฐ’๋“ค์„ ๋ฐ›๊ธฐ ์œ„ํ•ด ์„ ์–ธํ–ˆ๋˜ responseValue ๋ฐฐ์—ด์— ๊ฐ’์„ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ ค ์ฃผ์—ˆ์–ด์š”.


ํ•ด๋‹น ๋ฐฐ์—ด์— idx ๊ฐ’ ๋‚ด์šฉ์ด ๋นˆ ๊ฐ’์ด ์•„๋‹ˆ๋ผ๋ฉด errorSlackMessage์— Error ๋‚ด์šฉ์„ ๋‹ด์•„์ฃผ๊ณ ,
ํ•ด๋‹น ๋‚ด์šฉ์„ Slack์œผ๋กœ ๋ณด๋‚ด๊ธฐ ์œ„ํ•œ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋„๋ก ํ•˜๊ณ  ์žˆ์–ด์š”.







        ๐Ÿ“ฆ Slack Error Value Send

๋ฌธ์ œ๊ฐ€ ์ƒ๊ธด ๋‚ด์šฉ์„ Slack์œผ๋กœ ๋ณด๋‚ด๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•œ Logic์ด์—์š”.

203๋ฒˆ์งธ ์ค„์— ๋‹ค๋ฅธ ์ฑ„๋„์— ํ•ด๋‹น ๊ฐ’์„ ๋ฐ›๊ธฐ ์œ„ํ•ด Web Hooks URL์„ ์ƒˆ๋กœ ๋ฐ›์•„ ์ฃผ์—ˆ์–ด์š”.

๊ทธ๋Ÿฐ ๋’ค ์œ„์˜ Slack Send Logic๊ณผ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๊ฐ’์„ ๋ณด๋‚ด๋„๋ก ์ฒ˜๋ฆฌ๋ฅผ ํ•˜์˜€๋‹ต๋‹ˆ๋‹ค.



 

 

 

 

    ๐Ÿ”ฝ  Test

        ๐Ÿ“ฆ ์ •์ƒ ์ž‘๋™ ์—ฌ๋ถ€ ํ™•์ธ

์ด์ œ ์ž˜ ์ž‘๋™ํ•˜๋Š” ์ง€ ํ•œ๋ฒˆ ํ™•์ธํ•ด ๋ณผ๊ฒŒ์š”.


Test๋ฅผ ์œ„ํ•ด ์ตœ์ดˆ ์ž‘๋™ํ•  ํ•จ์ˆ˜๋ฅผ ์„ ํƒํ•ด ์ฃผ๊ณ , ์‹คํ–‰ Button์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 


๊ทธ๋Ÿผ ์œ„์™€ ๊ฐ™์ด ๊ฒฝ๊ณ ๊ฐ€ ๋ฐœ์ƒํ• ํ…๋ฐ, ์ด๋Š” Email Logic์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์ „ ๊ณ„์ • ์„ค์ •์„ ํ•ด์ฃผ์–ด์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ด์—์š”.




ํ˜„์žฌ Login๋œ ๊ณ„์ •์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.



....(์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)์„ ๋ˆŒ๋Ÿฌ์ฃผ์„ธ์š”.


 

์œ„์™€ ๊ฐ™์ด ๋‚˜์˜ค๋ฉด ํ—ˆ์šฉ์„ ๋ˆŒ๋Ÿฌ์ค๋‹ˆ๋‹ค.

 

 

 

์‹คํ–‰์ด ์ •์ƒ์ ์œผ๋กœ ๋˜๋ฉด ์œ„์™€ ๊ฐ™์ด Slack์ด ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.




Mail๋„ ์ •์ƒ์ ์œผ๋กœ ์˜จ ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.




์Šคํ”„๋ ˆ๋“œ ์‹œํŠธ์—๋„ Mail์ด ๊ฐ„ ๋’ค ๋ฐœ์†ก์ด๋ผ๋Š” ๊ฐ’์ด ๋‚จ์€ ๊ฑธ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.





Slack์„ ๋ฐœ์†กํ•˜๋ ค๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธฐ๋Š” ๊ฒฝ์šฐ๋ฅผ ๊ฐ€์ •ํ•˜๊ธฐ ์œ„ํ•ด 130๋ฒˆ์งธ fetch ๋งค๊ฐœ๋ณ€์ˆ˜์— URL ๋ณ€์ˆ˜๋ช…์„ ์กฐ์ž‘ํ•ด ๋ณด์•˜์–ด์š”.



์œ„์™€ ๊ฐ™์ด Slack์„ ๋ณด๋‚ด๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  Slack์œผ๋กœ ์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.




์ด๋ฒˆ์—” Mail์„ ๋ณด๋‚ด๋‹ค๊ฐ€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ ์ƒํ™ฉ์„ ๊ฐ€์ •ํ•ด ๋ณผ๊ฒŒ์š”.



์ตœ์ดˆ Slack์€ ์ •์ƒ์ ์œผ๋กœ ๋„์ฐฉ์„ ํ–ˆ์–ด์š”.



ํ•˜์ง€๋งŒ Mail ๋ณด๋‚ผ ๋•Œ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค๊ณ  ๋‚˜์˜ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์–ด์š”.




๋‘˜ ๋‹ค ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ํ•ด๋ฒ„๋ฆฌ๋ฉด ์ด๋ ‡๊ฒŒ ๋‘˜ ๋‹ค ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๊ฒƒ๋„ ํ™•์ธ์„ ํ•˜์˜€๋‹ต๋‹ˆ๋‹ค.

 

 

 

 

์ผ์ž˜๋Ÿฌ์˜ ๋น„๋ฐ€ ๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ ์ œ๋Œ€๋กœ ํŒŒํ—ค์น˜๊ธฐ:๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ๋กœ ์—‘์…€ ๋ฐŸ๊ณ  ์นผํ‡ดํ•˜์ž

COUPANG

www.coupang.com

"์ด ํฌ์ŠคํŒ…์€ ์ฟ ํŒก ํŒŒํŠธ๋„ˆ์Šค ํ™œ๋™์˜ ์ผํ™˜์œผ๋กœ, ์ด์— ๋”ฐ๋ฅธ ์ผ์ •์•ก์˜ ์ˆ˜์ˆ˜๋ฃŒ๋ฅผ ์ œ๊ณต๋ฐ›์Šต๋‹ˆ๋‹ค."

 

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•