Skip to content

Mireu-Lab/event-mailing-service

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

66 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

event-mailing-service

๐Ÿ“– ํ”„๋กœ์ ํŠธ ์†Œ๊ฐœ

ICT ํ–‰์‚ฌ ๋ฐ ์Šคํ„ฐ๋”” ์ž๋™ ์•Œ๋ฆผ์ด๋Š” ์ˆ˜๋™์œผ๋กœ ๊ณต์œ ๋˜๋˜ ์˜คํ”„๋ผ์ธ ๋ฐ ์˜จ๋ผ์ธ ํ–‰์‚ฌ, ์Šคํ„ฐ๋””, ๋Œ€ํšŒ ๋“ฑ์˜ ์ •๋ณด๋ฅผ ์ž๋™ํ™”ํ•˜์—ฌ Google Groups๋ฅผ ํ†ตํ•ด ๋ฉ”์ผ๋ง์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๊ธฐ์กด์— Discord๋ฅผ ํ†ตํ•ด ์ˆ˜๊ธฐ๋กœ ๊ณต์ง€ํ•˜๋˜ ๋ฐฉ์‹์„ ๊ฐœ์„ ํ•˜์—ฌ, Google Form์œผ๋กœ ์ƒˆ๋กœ์šด ํ–‰์‚ฌ ์ •๋ณด๋ฅผ ์ œ์ถœ๋ฐ›๊ณ  Google Apps Script์™€ Gemini AI๋ฅผ ํ™œ์šฉํ•ด ์ž๋™์œผ๋กœ ๋‚ด์šฉ์„ ๋ถ„์„ ๋ฐ ์š”์•ฝํ•˜์—ฌ ์ „์ฒด ๊ทธ๋ฃน์›์—๊ฒŒ ์ด๋ฉ”์ผ์„ ๋ฐœ์†กํ•˜๊ณ  ๊ตฌ๊ธ€ ์บ˜๋ฆฐ๋”์— ์ผ์ •์„ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค.

์ด ํ”„๋กœ์ ํŠธ๋Š” ์šด์˜์ž์˜ ๊ตฐ ์ž…๋Œ€๋กœ ์ธํ•œ ๋ถ€์žฌ์ค‘์—๋„ ์ง€์†์ ์ธ ์ •๋ณด ๊ณต์œ ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ์ž๋™ํ™”์— ์ดˆ์ ์„ ๋งž์ถ”์—ˆ์œผ๋ฉฐ, ์ฐธ์—ฌ์ž๋“ค์ด ์œ ์ตํ•œ ์ •๋ณด๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ๊ธฐํšŒ๋ฅผ ๋ฐœ๊ฒฌํ•˜๊ณ  ์„ฑ์žฅํ•˜๊ธฐ๋ฅผ ๋ฐ”๋ผ๋Š” ๋งˆ์Œ์œผ๋กœ ์‹œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

โœจ ์ฃผ์š” ๊ธฐ๋Šฅ

  • Google Form์„ ํ†ตํ•œ ๊ฐ„ํŽธํ•œ ์ •๋ณด ์ œ์ถœ: ๋ˆ„๊ตฌ๋‚˜ ์ƒˆ๋กœ์šด ํ–‰์‚ฌ, ์Šคํ„ฐ๋””, ๋Œ€ํšŒ ์ •๋ณด๋ฅผ URL ํ˜•ํƒœ๋กœ ์‰ฝ๊ฒŒ ์ œ์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
  • Gemini AI ๊ธฐ๋ฐ˜ ์ฝ˜ํ…์ธ  ๋ถ„์„ ๋ฐ ์š”์•ฝ: ์ œ์ถœ๋œ URL์˜ ๋‚ด์šฉ์„ AI๊ฐ€ ์ž๋™์œผ๋กœ ๋ถ„์„ํ•˜์—ฌ ํ–‰์‚ฌ ์ •๋ณด๋ฅผ ์ •ํ™•ํžˆ ํŒŒ์•…ํ•˜๊ณ , ์ง€์ •๋œ ํ˜•์‹์— ๋งž์ถฐ ํ•œ๊ตญ์–ด ์ด๋ฉ”์ผ ๋ณธ๋ฌธ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค.
  • ์ฝ˜ํ…์ธ  ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ: AI๊ฐ€ ์ œ์ถœ๋œ URL์˜ ๋‚ด์šฉ์ด ํ–‰์‚ฌ, ๋Œ€ํšŒ, ์Šคํ„ฐ๋””์™€ ๊ด€๋ จ์ด ์žˆ๋Š”์ง€ ํŒ๋‹จํ•˜์—ฌ ๊ด€๋ จ ์—†๋Š” ์ •๋ณด๋Š” ์ž๋™์œผ๋กœ ํ•„ํ„ฐ๋งํ•ฉ๋‹ˆ๋‹ค.
  • ์ž๋™ ์ด๋ฉ”์ผ ๋ฐœ์†ก: ์ƒ์„ฑ๋œ ์ด๋ฉ”์ผ ์ดˆ์•ˆ์€ ์ง€์ •๋œ Google Group์œผ๋กœ ์ž๋™ ๋ฐœ์†ก๋˜์–ด ๋ชจ๋“  ๊ทธ๋ฃน์›์—๊ฒŒ ๊ณต์œ ๋ฉ๋‹ˆ๋‹ค.
  • Google Calendar ์ž๋™ ์—ฐ๋™: ์ด๋ฉ”์ผ ๋ณธ๋ฌธ์—์„œ ๋‚ ์งœ์™€ ์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•˜์—ฌ Google Calendar์— ์ž๋™์œผ๋กœ ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๋ฉ”์ผ ๋ณธ๋ฌธ์— '์บ˜๋ฆฐ๋”์— ์ถ”๊ฐ€ํ•˜๊ธฐ' ๋งํฌ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.
  • ์˜ค๋ฅ˜ ์•Œ๋ฆผ ๊ธฐ๋Šฅ: URL์ด ์œ ํšจํ•˜์ง€ ์•Š๊ฑฐ๋‚˜, ์›น์‚ฌ์ดํŠธ์—์„œ ์ •๋ณด๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์—†๊ฑฐ๋‚˜, AI๊ฐ€ ๊ด€๋ จ ์—†๋Š” ์ฝ˜ํ…์ธ ๋กœ ํŒ๋‹จํ•˜๋Š” ๋“ฑ ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ฆ‰์‹œ ์ด๋ฉ”์ผ๋กœ ์ƒํ™ฉ์„ ์•Œ๋ฆฝ๋‹ˆ๋‹ค.

โš™๏ธ ๋™์ž‘ ๋ฐฉ์‹

  1. ์ •๋ณด ์ œ์ถœ: ์‚ฌ์šฉ์ž๊ฐ€ Google Form์„ ํ†ตํ•ด ํ–‰์‚ฌ ์ •๋ณด๊ฐ€ ๋‹ด๊ธด URL์„ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.
  2. ์Šคํฌ๋ฆฝํŠธ ํŠธ๋ฆฌ๊ฑฐ: Google Form ์ œ์ถœ ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด Google Apps Script์˜ onFormSubmit ํ•จ์ˆ˜๊ฐ€ ์ž๋™์œผ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.
  3. ์ฝ˜ํ…์ธ  ์ถ”์ถœ: ์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ œ์ถœ๋œ URL์˜ ์›น ํŽ˜์ด์ง€์— ์ ‘์†ํ•˜์—ฌ HTML์—์„œ ํ…์ŠคํŠธ ์ฝ˜ํ…์ธ ๋ฅผ ์ถ”์ถœํ•ฉ๋‹ˆ๋‹ค.
  4. AI ๋ถ„์„ ๋ฐ ์ƒ์„ฑ: ์ถ”์ถœ๋œ ํ…์ŠคํŠธ๋ฅผ Gemini AI API๋กœ ์ „์†กํ•ฉ๋‹ˆ๋‹ค. AI๋Š” ๋‹ค์Œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
    • ์ฝ˜ํ…์ธ ๊ฐ€ ํ–‰์‚ฌ, ๋Œ€ํšŒ, ์Šคํ„ฐ๋””์™€ ๊ด€๋ จ ์žˆ๋Š”์ง€ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
    • ๊ด€๋ จ์ด ์žˆ๋‹ค๋ฉด, ์ง€์ •๋œ ํ˜•์‹(์ œ๋ชฉ, ๋‚ด์šฉ, ์ผ์ • ๋“ฑ)์— ๋งž์ถฐ ํ•œ๊ตญ์–ด ์ด๋ฉ”์ผ ์ดˆ์•ˆ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.
  5. ์บ˜๋ฆฐ๋” ์—ฐ๋™: ์ƒ์„ฑ๋œ ์ด๋ฉ”์ผ ๋ณธ๋ฌธ์—์„œ ์ผ์ • ์ •๋ณด๋ฅผ ํŒŒ์‹ฑํ•˜์—ฌ Google Calendar์— ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์ฐธ์„ ๋งํฌ๋ฅผ ๋งŒ๋“ญ๋‹ˆ๋‹ค.
  6. ๋ฉ”์ผ ๋ฐœ์†ก: ์™„์„ฑ๋œ ์ด๋ฉ”์ผ ๋ณธ๋ฌธ์„ Google Groups ๋ฉ”์ผ ์ฃผ์†Œ๋กœ ๋ฐœ์†กํ•˜์—ฌ ๊ทธ๋ฃน์› ์ „์ฒด์—๊ฒŒ ๊ณต์ง€ํ•ฉ๋‹ˆ๋‹ค.
  7. ์˜ˆ์™ธ ์ฒ˜๋ฆฌ: ๊ณผ์ • ์ค‘ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์ œ์ถœ์ž์˜ ์ด๋ฉ”์ผ๊ณผ ์˜ค๋ฅ˜ ๋‚ด์šฉ์„ ํฌํ•จํ•œ ์•Œ๋ฆผ์„ ๊ด€๋ฆฌ์ž ์ด๋ฉ”์ผ๋กœ ๋ฐœ์†กํ•ฉ๋‹ˆ๋‹ค.

๐Ÿš€ ์‹œ์ž‘ํ•˜๊ธฐ

์„ค์ • ๋ฐฉ๋ฒ•

Code.gs ํŒŒ์ผ ์ƒ๋‹จ์˜ ์„ค์ • ๋ณ€์ˆ˜๋“ค์„ ์ž์‹ ์˜ ํ™˜๊ฒฝ์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

// ===============================================================
// โœจ ์„ค์ • ๋ณ€์ˆ˜ โœจ
// ์ด ๋ถ€๋ถ„์— ์ž์‹ ์˜ ํ™˜๊ฒฝ์— ๋งž๋Š” ๊ฐ’์„ ์ •ํ™•ํžˆ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”.
// ===============================================================

// Google AI Studio (https://aistudio.google.com/)์—์„œ ๋ฐœ๊ธ‰๋ฐ›์€ API ํ‚ค๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
const GEMINI_API_KEY = "YOUR_GEMINI_API_KEY";

// ์‚ฌ์šฉํ•  ๋ชจ๋ธ์— ๋งž์ถฐ ์—”๋“œํฌ์ธํŠธ URL์„ ์„ค์ •ํ•˜์„ธ์š”.
const GEMINI_API_URL = "https://generativelanguage.googleapis.com/v1beta/models/gemma-3-27b-it:generateContent";

// ์ด๋ฉ”์ผ์„ ๋ฐœ์†กํ•  ๋Œ€์ƒ Google Group์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
const GOOGLE_GROUP_EMAIL = "your-group@googlegroups.com";

// ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ์•Œ๋ฆผ์„ ๋ฐ›์„ ๊ด€๋ฆฌ์ž์˜ ์ด๋ฉ”์ผ ์ฃผ์†Œ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.
const ADMIN_EMAIL = "your-admin-email@gmail.com";

// Google Calendar ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑํ•  ์บ˜๋ฆฐ๋”์˜ ID๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”. (์˜ˆ: 'primary' ๋˜๋Š” '...@group.calendar.google.com')
const CALENDAR_ID = "your-calendar-id@group.calendar.google.com";

ํŠธ๋ฆฌ๊ฑฐ ์„ค์ •

์ด ์Šคํฌ๋ฆฝํŠธ๋ฅผ Google Form๊ณผ ์—ฐ๋™ํ•˜์—ฌ ์ž๋™์œผ๋กœ ์‹คํ–‰๋˜๊ฒŒ ํ•˜๋ ค๋ฉด Apps Script ํŽธ์ง‘๊ธฐ์—์„œ ํŠธ๋ฆฌ๊ฑฐ๋ฅผ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

  1. ์Šคํฌ๋ฆฝํŠธ ํŽธ์ง‘๊ธฐ์—์„œ 'ํŠธ๋ฆฌ๊ฑฐ' (์‹œ๊ณ„ ๋ชจ์–‘ ์•„์ด์ฝ˜) ๋ฉ”๋‰ด๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  2. '+ ํŠธ๋ฆฌ๊ฑฐ ์ถ”๊ฐ€' ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.
  3. ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ค์ •์„ ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.
    • ์‹คํ–‰ํ•  ํ•จ์ˆ˜ ์„ ํƒ: onFormSubmit
    • ๋ฐฐํฌ ์„ ํƒ: ํ—ค๋“œ
    • ์ด๋ฒคํŠธ ์†Œ์Šค ์„ ํƒ: ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์—์„œ
    • ์ด๋ฒคํŠธ ์œ ํ˜• ์„ ํƒ: ์–‘์‹ ์ œ์ถœ ์‹œ
  4. ์ €์žฅ ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๊ณ  ํ•„์š”ํ•œ ๊ถŒํ•œ์„ ์Šน์ธํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ”— ๊ด€๋ จ ๋งํฌ

About

๐Ÿค– ICT ํ–‰์‚ฌ ๋ฐ ์Šคํ„ฐ๋”” ์ •๋ณด๋ฅผ ์ž๋™์œผ๋กœ ์ˆ˜์ง‘ํ•˜์—ฌ Google Groups๋ฅผ ํ†ตํ•ด ๋ฉ”์ผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ์ž๋™ํ™” ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

Topics

Resources

Stars

Watchers

Forks

Contributors