๐Ÿ—๏ธ [์‚ฌ๋ก€] Google AI Studio๋กœ ๊ตฌํ˜„ํ•œ ๋ณต์ง€๊ธฐ๊ด€ ์ˆ˜์š” ์ž๋™ ๋งค์นญ ์‹œ์Šคํ…œ

1. ์†Œ๊ฐœ

์‹œ๋„ํ•˜๊ณ ์ž ํ–ˆ๋˜ ๊ฒƒ๊ณผ ๊ทธ ์ด์œ ๋ฅผ ์•Œ๋ ค์ฃผ์„ธ์š”.

๋ณต์ง€๊ธฐ๊ด€์˜ ๋ฌผํ’ˆ ์ˆ˜์š”๋Š” ์ฃผ๋กœ ์ „ํ™”, ๋ฉ”์ผ, ์—‘์…€ ๋“ฑ์œผ๋กœ ๊ฐœ๋ณ„ ์ˆ˜์ง‘๋˜๊ณ  ์žˆ์–ด,

๊ธฐ๋ถ€ ๋ฌผํ’ˆ์ด ์ž…๊ณ ๋˜์—ˆ์„ ๋•Œ ์–ด๋–ค ๊ธฐ๊ด€์— ๊ฐ€์žฅ ์‹œ๊ธ‰ํ•œ์ง€ ์ฆ‰์‹œ ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์šด ๊ตฌ์กฐ์˜€์Šต๋‹ˆ๋‹ค.

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด,

๋ณต์ง€๊ธฐ๊ด€์ด ์ง์ ‘ ์ˆ˜์š”๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฐ์ดํ„ฐ๊ฐ€ ์ž๋™ ์ €์žฅ๋˜๊ณ  ๊ด€๋ฆฌ์ž๊ฐ€ ์ฆ‰์‹œ ์•Œ๋ฆผ์„ ๋ฐ›๋Š”

โ€˜์‚ฌ๋ž‘์˜ ๋ฌผ๋ฅ˜ ๋งค์นญ ์‹œ์Šคํ…œ(Love Logistics Matching)โ€™์„ ๊ธฐํšํ–ˆ์Šต๋‹ˆ๋‹ค.

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

2. ์ง„ํ–‰ ๋ฐฉ๋ฒ•

์–ด๋–ค ๋„๊ตฌ๋ฅผ ์‚ฌ์šฉํ–ˆ๊ณ , ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•˜์…จ๋‚˜์š”?

๐Ÿ”ง ์‚ฌ์šฉ ๋„๊ตฌ

  • Google AI Studio (App Builder)
    โ†’ ๋ณต์ง€๊ธฐ๊ด€์šฉ ์ˆ˜์š” ์ž…๋ ฅ ์•ฑ UI/UX ์„ค๊ณ„

  • Google Sheets
    โ†’ ์ˆ˜์š” ๋ฐ์ดํ„ฐ ์ €์žฅ์šฉ DB

  • Google Apps Script
    โ†’ ์„œ๋ฒ„ ์—ญํ•  (๋ฐ์ดํ„ฐ ์ˆ˜์‹ , ์‹œํŠธ ์ €์žฅ, ์ด๋ฉ”์ผ ์•Œ๋ฆผ)

๐Ÿ”„ ์ „์ฒด ํ๋ฆ„

  1. ๊ธฐ๊ด€์ด AI Studio ์•ฑ์—์„œ ์ˆ˜์š” ์ž…๋ ฅ

  2. Apps Script ์›น ์•ฑ(doPost)์œผ๋กœ ๋ฐ์ดํ„ฐ ์ „์†ก

  3. Google Sheets์— ์ž๋™ ์ €์žฅ

  4. ๊ด€๋ฆฌ์ž ์ด๋ฉ”์ผ๋กœ ์ฆ‰์‹œ ์•Œ๋ฆผ ๋ฐœ์†ก

๐Ÿง  ์‚ฌ์šฉํ•œ ํ”„๋กฌํ”„ํŠธ ์ „๋ฌธ

๋ณต์ง€๊ธฐ๊ด€์šฉ ์ˆ˜์š” ์กฐ์‚ฌ ์•ฑ์„ ๋งŒ๋“ค๊ณ  ์žˆ์–ด.

์‚ฌ์šฉ์ž๊ฐ€ ํผ์— ์ •๋ณด๋ฅผ ์ž…๋ ฅํ•˜๋ฉด

๊ตฌ๊ธ€ ์Šคํ”„๋ ˆ๋“œ์‹œํŠธ์— ์ž๋™์œผ๋กœ ์ €์žฅ๋˜๊ณ ,

๊ด€๋ฆฌ์ž ์ด๋ฉ”์ผ๋กœ ์•Œ๋ฆผ์ด ๊ฐ€๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๊ณ  ์‹ถ์–ด.

์ด๋ฅผ ์œ„ํ•ด ๊ตฌ๊ธ€ ์•ฑ์Šค ์Šคํฌ๋ฆฝํŠธ(Apps Script)์˜

doPost ํ•จ์ˆ˜ ๊ฐ€์ด๋“œ๋ผ์ธ๊ณผ ์˜ˆ์ œ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด์ค˜.

๐Ÿ’ป Apps Script ์ฝ”๋“œ ์ „๋ฌธ (๋ฌธ์ œ ํ•ด๊ฒฐ ํ›„ ์ตœ์ข…๋ณธ)

doPost(e) {

ย  var sheet = SpreadsheetApp

ย  ย  .openById("์Šคํ”„๋ ˆ๋“œ์‹œํŠธ_ID")

ย  ย  .getSheetByName("์‹œํŠธ์ด๋ฆ„");

ย  var data;

ย  // JSON ๋ฐฉ์‹๊ณผ form-data ๋ฐฉ์‹ ๋ชจ๋‘ ๋Œ€์‘

ย  if (e.postData && e.postData.type === "application/json") {

ย  ย  data = JSON.parse(e.postData.contents);

ย  } else {

ย  ย  data = e.parameter;

ย  }

ย  // ์ˆ˜์š” ๋ฐ์ดํ„ฐ ์ €์žฅ

ย  sheet.appendRow([

ย  ย  new Date(),

ย  ย  data.orgName || "",

ย  ย  data.item || "",

ย  ย  data.contact || ""

ย  ]);

ย  // ๊ด€๋ฆฌ์ž ์ด๋ฉ”์ผ ์•Œ๋ฆผ

ย  MailApp.sendEmail(

ย  ย  "๊ด€๋ฆฌ์ž_์ด๋ฉ”์ผ@gmail.com",

ย  ย  "[์‹ ๊ทœ ์‹ ์ฒญ] ์‚ฌ๋ž‘์˜ ๋ฌผ๋ฅ˜ ์ˆ˜์š” ๋“ฑ๋ก ์•Œ๋ฆผ",

ย  ย  `๊ธฐ๊ด€๋ช…: ${data.orgName}

์‹ ์ฒญ ๋ฌผํ’ˆ: ${data.item}

์—ฐ๋ฝ์ฒ˜: ${data.contact}`

ย  );

ย  return ContentService

ย  ย  .createTextOutput(JSON.stringify({ result: "success" }))

ย  ย  .setMimeType(ContentService.MimeType.JSON);

}

๐Ÿ–ผ๏ธ ํ™œ์šฉ ์ด๋ฏธ์ง€ / ์บก์ฒ˜ ํ™”๋ฉด

  • ๋ณต์ง€๊ธฐ๊ด€ ์ˆ˜์š” ์ž…๋ ฅ ์•ฑ ํ™”๋ฉด

  • Google Sheets์— ์‹ค์‹œ๊ฐ„์œผ๋กœ ๋ˆ„์ ๋˜๋Š” ์ˆ˜์š” DB

  • ์‹ ๊ทœ ์ˆ˜์š” ๋“ฑ๋ก ์‹œ ๊ด€๋ฆฌ์ž ์ด๋ฉ”์ผ ์•Œ๋ฆผ 3. ๊ฒฐ๊ณผ์™€ ๋ฐฐ์šด ์ 

โœ… ํ•ด๊ฒฐ ๊ฒฐ๊ณผ

  • ๋ณต์ง€๊ธฐ๊ด€์—์„œ ์ˆ˜์š”๋ฅผ ์ž…๋ ฅํ•˜๋ฉด
    โ†’ ์ง€์—ฐ ์—†์ด Google Sheets์— ๋ฐ์ดํ„ฐ๊ฐ€ ์ €์žฅ๋˜๊ณ 
    โ†’ ๊ด€๋ฆฌ์ž์—๊ฒŒ ์ฆ‰์‹œ ์ด๋ฉ”์ผ ์•Œ๋ฆผ์ด ๋ฐœ์†ก๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ์™„์„ฑํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ณ„๋„์˜ ์„œ๋ฒ„ ๊ตฌ์ถ• ์—†์ด๋„ ์‹ค์ œ ์—…๋ฌด์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์ž๋™ํ™” ์‹œ์Šคํ…œ์„ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

โœจ ๋ฐฐ์šด ์ ๊ณผ ๋‚˜๋งŒ์˜ ๊ฟ€ํŒ

  • Apps Script ์›น ์•ฑ ์—ฐ๋™ ์‹œ, ์ „์†ก ๋ฐ์ดํ„ฐ ํ˜•์‹(JSON / form-data)์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌ ๋ฐฉ์‹์ด ๋‹ฌ๋ผ์ง„๋‹ค๋Š” ์ ์„ ์ฒด๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

  • AI Studio ๋“ฑ ๋…ธ์ฝ”๋“œ/๋กœ์šฐ์ฝ”๋“œ ๋„๊ตฌ๋Š” ๋Œ€๋ถ€๋ถ„ form-data ๋ฐฉ์‹์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

  • ๊ฟ€ํŒ

    • e.parameter๋ฅผ ํ•จ๊ป˜ ์ฒ˜๋ฆฌํ•˜๋ฉด ์—ฐ๋™ ์•ˆ์ •์„ฑ์ด ํฌ๊ฒŒ ๋†’์•„์ง‘๋‹ˆ๋‹ค.

    • ์›น ์•ฑ ์ˆ˜์ • ํ›„์—๋Š” ๋ฐ˜๋“œ์‹œ โ€˜์ƒˆ ๋ฐฐํฌโ€™๋ฅผ ํ•ด์•ผ ์ตœ์‹  ์ฝ”๋“œ๊ฐ€ ๋ฐ˜์˜๋ฉ๋‹ˆ๋‹ค.

    • ์›น ์•ฑ ๋ฐฐํฌ ์‹œ ์‹คํ–‰ ์ฃผ์ฒด๋Š” โ€˜๋‚˜(์†Œ์œ ์ž)โ€™, ์•ก์„ธ์Šค ๊ถŒํ•œ์€ โ€˜๋ชจ๋“  ์‚ฌ์šฉ์ž(Anyone)โ€™๋กœ ์„ค์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

โš ๏ธ ๊ณผ์ • ์ค‘ ๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค์™€ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

  • ์ดˆ๊ธฐ์—๋Š” ์›น ์•ฑ ๋ฐฐํฌ URL์„ ์ •ํ™•ํžˆ ๋“ฑ๋กํ–ˆ์Œ์—๋„
    ์‹œํŠธ ์ €์žฅ๊ณผ ์ด๋ฉ”์ผ ์•Œ๋ฆผ์ด ๋ชจ๋‘ ์ž‘๋™ํ•˜์ง€ ์•Š๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ์›์ธ ๋ถ„์„ ๊ฒฐ๊ณผ,

    • AI Studio์—์„œ ๋ณด๋‚ด๋Š” ๋ฐ์ดํ„ฐ๊ฐ€ JSON์ด ์•„๋‹Œ form-data ๋ฐฉ์‹์ด์—ˆ๊ณ 

    • e.postData.contents๋งŒ ์‚ฌ์šฉํ•˜๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋กœ ์ธํ•ด ๋ฐ์ดํ„ฐ๊ฐ€ ๋น„์–ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด
    JSON๊ณผ form-data๋ฅผ ๋ชจ๋‘ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๋กœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜๊ณ 
    ์›น ์•ฑ์„ ์ƒˆ ๋ฐฐํฌํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿš€ ์•ž์œผ๋กœ์˜ ๊ณ„ํš

  • ๊ด€๋ฆฌ์ž ์‹œํŠธ์—์„œ ์ˆ˜์š”๋ฅผ ์„ ํƒํ•œ ๋’ค
    ๋ฒ„ํŠผ ํ•˜๋‚˜๋กœ โ€˜๋งค์นญ ์™„๋ฃŒ ์•Œ๋ฆผโ€™์„ ๊ธฐ๊ด€๊ณผ ๊ธฐ๋ถ€์ž์—๊ฒŒ ์ž๋™ ๋ฐœ์†ก

  • ๋ฌผํ’ˆ ์นดํ…Œ๊ณ ๋ฆฌ ๋ฐ ๊ธด๊ธ‰๋„ ๊ธฐ๋ฐ˜ ์šฐ์„  ๋งค์นญ ๋กœ์ง ๊ณ ๋„ํ™”

  • ๋ณต์ง€ ๋ฌผ๋ฅ˜ ์—…๋ฌด ์ „๋ฐ˜์— ์ ์šฉ ๊ฐ€๋Šฅํ•œ ์‹ค๋ฌดํ˜• ์ž๋™ํ™” ๋ชจ๋ธ๋กœ ํ™•์žฅํ•  ๊ณ„ํš์ž…๋‹ˆ๋‹ค.

4. ๋„์›€ ๋ฐ›์€ ๊ธ€ (์˜ต์…˜)

  • Google AI Studio ๊ณต์‹ ๊ฐ€์ด๋“œ

  • Google Apps Script Web App / doPost ๊ณต์‹ ๋ฌธ์„œ

  • Google Sheets ์ž๋™ํ™” ์‚ฌ๋ก€ ๊ธ€

๋‰ด์Šค๋ ˆํ„ฐ ๋ฌด๋ฃŒ ๊ตฌ๋…

๐Ÿ‘‰ ์ด ๊ฒŒ์‹œ๊ธ€๋„ ์ฝ์–ด๋ณด์„ธ์š”