๐Ÿš€ Google Apps Script ์‹ค์‹œ๊ฐ„ ๊ฒฝ์ œ ํ‹ฐ์ปค ๋ฐฐํฌ ์™„์ „ ์ƒ์„ธ ๊ฐ€์ด๋“œ

๐Ÿš€ Google Apps Script ์‹ค์‹œ๊ฐ„ ๊ฒฝ์ œ ํ‹ฐ์ปค ๋ฐฐํฌ ์™„์ „ ์ƒ์„ธ ๊ฐ€์ด๋“œ

(2025๋…„ 11์›” 28์ผ ๊ธฐ์ค€, ์Šคํฌ๋ฆฐ์ƒท ์—†์ด๋„ 100% ์„ฑ๊ณตํ•˜๋Š” ์ˆœ์„œ)

์ด ๊ฐ€์ด๋“œ๋Š” Google Apps Script๋ฅผ ์›น ์•ฑ(Web App)์œผ๋กœ ๋ฐฐํฌํ•˜์—ฌ, Google Trends์˜ ์‹ค์‹œ๊ฐ„ ๊ฒฝ์ œ ํ‚ค์›Œ๋“œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” JSON API (ํ‹ฐ์ปค ๋ฐ์ดํ„ฐ)๋ฅผ ๋งŒ๋“œ๋Š” ๊ณผ์ •์„ ์ƒ์„ธํžˆ ์•ˆ๋‚ดํ•ฉ๋‹ˆ๋‹ค. ์ด JSON URL์€ ๋ธ”๋กœ๊ทธ๋‚˜ ์›น์‚ฌ์ดํŠธ์— ์‹ค์‹œ๊ฐ„ ์ •๋ณด๋ฅผ ํ‘œ์‹œํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.


1๋‹จ๊ณ„: ์ƒˆ Apps Script ํ”„๋กœ์ ํŠธ ๋งŒ๋“ค๊ธฐ

  1. Apps Script ํ™ˆํŽ˜์ด์ง€ ์ ‘์†:

  2. ์ƒˆ ํ”„๋กœ์ ํŠธ ์‹œ์ž‘:

    • ์™ผ์ชฝ ์œ„ ํŒŒ๋ž€ ๋ฒ„ํŠผ 【+ ์ƒˆ ํ”„๋กœ์ ํŠธ】๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ํ”„๋กœ์ ํŠธ ์ด๋ฆ„ ์„ค์ •:

    • ํ”„๋กœ์ ํŠธ ์ด๋ฆ„(์˜ˆ: “๊ฒฝ์ œํ‹ฐ์ปค 2025”)์„ ์•„๋ฌด๊ฑฐ๋‚˜ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค.


2๋‹จ๊ณ„: ํ•ต์‹ฌ ์ฝ”๋“œ ์ „์ฒด ๊ต์ฒด ๋ฐ ์ €์žฅ

๊ธฐ์กด Code.gs์— ์žˆ๋Š” ๋‚ด์šฉ์„ ์ „๋ถ€ ์ง€์šฐ๊ณ , ์•„๋ž˜์˜ ํ•ต์‹ฌ JavaScript ์ฝ”๋“œ๋ฅผ ๋ณต์‚ฌํ•˜์—ฌ ๋ถ™์—ฌ๋„ฃ์Šต๋‹ˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” Google Trends RSS ํ”ผ๋“œ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ ธ์™€ ๊ฒฝ์ œ ๊ด€๋ จ ํ‚ค์›Œ๋“œ๋งŒ ํ•„ํ„ฐ๋งํ•œ ํ›„, JSON ํ˜•์‹์œผ๋กœ ๋ฐ˜ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

JavaScript
function doGet(e) {
  return ContentService
    .createTextOutput(getKoreaEconomyTrends())
    .setMimeType(ContentService.MimeType.JSON);
}

function getKoreaEconomyTrends() {
  try {
    const rss = UrlFetchApp.fetch('https://trends.google.com/trends/trendingsearches/daily/rss?geo=KR').getContentText();
    const items = rss.split('<item>');
    const result = [];
    const keywords = ['์ฝ”์Šคํ”ผ','์ฝ”์Šค๋‹ฅ','ํ™˜์œจ','๋‹ฌ๋Ÿฌ','๊ธˆ๋ฆฌ','๊ธฐ์ค€๊ธˆ๋ฆฌ','๋ถ€๋™์‚ฐ','์•„ํŒŒํŠธ','๋น„ํŠธ์ฝ”์ธ','์ฝ”์ธ','๊ธˆ๊ฐ’','์œ ๊ฐ€','์ฃผ์‹','ํˆฌ์ž','๊ฒฝ๊ธฐ','๋ฌผ๊ฐ€','์ธํ”Œ๋ ˆ','์‹ค์—…','๋ฐฐ๋‹น','IPO','์ฑ„๊ถŒ','์€ํ–‰','์ฆ๊ถŒ','์ˆ˜์ถœ','์ˆ˜์ž…'];
    
    for (let i = 1; i < items.length && result.length < 5; i++) {
      const title = items[i].match(/<title><!\[CDATA\[(.*?)\]\]><\/title>/);
      if (title) {
        const kw = title[1].trim();
        if (keywords.some(k => kw.includes(k)) && kw.length > 2) {
          result.push({
            keyword: kw,
            link: 'https://www.google.com/search?q=' + encodeURIComponent(kw) + '&hl=ko&gl=kr'
          });
        }
      }
    }
    
    // ๊ฒฝ์ œ ํ‚ค์›Œ๋“œ๊ฐ€ ์—†์„ ๋•Œ ๊ธฐ๋ณธ๊ฐ’
    if (result.length === 0) {
      result.push({keyword:"์ฝ”์Šคํ”ผ",link:"https://google.com/search?q=์ฝ”์Šคํ”ผ"},
                  {keyword:"ํ™˜์œจ",link:"https://google.com/search?q=ํ™˜์œจ"},
                  {keyword:"๊ธˆ๋ฆฌ",link:"https://google.com/search?q=๊ธˆ๋ฆฌ"},
                  {keyword:"๋ถ€๋™์‚ฐ",link:"https://google.com/search?q=๋ถ€๋™์‚ฐ"},
                  {keyword:"๋น„ํŠธ์ฝ”์ธ",link:"https://google.com/search?q=๋น„ํŠธ์ฝ”์ธ"});
    }
    return JSON.stringify(result);
    
  } catch (e) {
    // ์˜ค๋ฅ˜ ๋ฐœ์ƒ ์‹œ ๊ธฐ๋ณธ๊ฐ’ ๋ฐ˜ํ™˜
    return JSON.stringify([
      {keyword:"์ฝ”์Šคํ”ผ",link:"https://google.com/search?q=์ฝ”์Šคํ”ผ"},
      {keyword:"ํ™˜์œจ",link:"https://google.com/search?q=ํ™˜์œจ"},
      {keyword:"๊ธˆ๋ฆฌ",link:"https://google.com/search?q=๊ธˆ๋ฆฌ"},
      {keyword:"๋ถ€๋™์‚ฐ",link:"https://google.com/search?q=๋ถ€๋™์‚ฐ"},
      {keyword:"๋น„ํŠธ์ฝ”์ธ",link:"https://google.com/search?q=๋น„ํŠธ์ฝ”์ธ"}
    ]);
  }
}
  • ์ €์žฅ: ์ฝ”๋“œ๋ฅผ ๋ถ™์—ฌ๋„ฃ์€ ํ›„, ์ƒ๋‹จ์˜ ๋””์Šคํฌ ๋ชจ์–‘ ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ฑฐ๋‚˜ Ctrl + S๋ฅผ ๋ˆŒ๋Ÿฌ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.


3๋‹จ๊ณ„: ์ •ํ™•ํ•œ ์›น ์•ฑ ๋ฐฐํฌ 7์ดˆ ์ˆœ์„œ (URL ํš๋“)

์ด ์ˆœ์„œ๋งŒ ์ง€ํ‚ค๋ฉด .../exec๋กœ ๋๋‚˜๋Š” ์›น ์•ฑ URL์„ 100% ์„ฑ๊ณต์ ์œผ๋กœ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  1. ๋ฐฐํฌ ์‹œ์ž‘: ์ƒ๋‹จ ๋ฉ”๋‰ด 【๋ฐฐํฌ】 【์ƒˆ ๋ฐฐํฌ】๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ฐฐํฌ ์œ ํ˜• ์„ ํƒ: ๋ฐฐํฌ ์„ค์ • ์ฐฝ์ด ๋œจ๋ฉด, ์˜ค๋ฅธ์ชฝ ํ†ฑ๋‹ˆ๋ฐ”ํ€ด ์•„์ด์ฝ˜์„ ํด๋ฆญํ•˜๊ณ  【์›น ์•ฑ】์„ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  3. ๋ฐฐํฌ ์„ค์ • ์ž…๋ ฅ (๊ฐ€์žฅ ์ค‘์š”):

    • ์‹คํ–‰ ๋Œ€์ƒ: ๋‚˜ (๋ณธ์ธ ์ด๋ฉ”์ผ)

    • ์•ก์„ธ์Šค ๊ถŒํ•œ: ๋“œ๋กญ๋‹ค์šด ๋ฉ”๋‰ด๋ฅผ ํด๋ฆญํ•˜์—ฌ ▼ ๋ˆ„๊ตฌ๋‚˜(์ต๋ช… ํฌํ•จ)๋ฅผ ์„ ํƒํ•ฉ๋‹ˆ๋‹ค.

  4. 【๋ฐฐํฌ】 ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  5. ๊ถŒํ•œ ์Šน์ธ (์ตœ์ดˆ 1ํšŒ ํ•„์ˆ˜):

    • “์•ฑ์ด ๊ฒ€์ฆ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค” ํ™”๋ฉด์ด ๋œจ๋ฉด:

      • 【๊ณ ๊ธ‰】์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      • ํ™”๋ฉด ๋งจ ์•„๋ž˜ 【๊ณ„์†ํ•˜๊ธฐ(์•ˆ์ „ํ•˜์ง€ ์•Š์Œ)】๋ฅผ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

      • 【ํ—ˆ์šฉ】์„ ํด๋ฆญํ•˜์—ฌ Apps Script๊ฐ€ Google ์„œ๋น„์Šค(RSS URL ํ˜ธ์ถœ ๋“ฑ)๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.

  6. URL ๋ณต์‚ฌ:

    • ๋ฐฐํฌ๊ฐ€ ์™„๋ฃŒ๋˜๋ฉด ์›น ์•ฑ URL์ด ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

    • /exec๋กœ ๋๋‚˜๋Š” ์ „์ฒด ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ•ฉ๋‹ˆ๋‹ค.

์ •์ƒ์ ์ธ URL ์˜ˆ์‹œ: https://script.google.com/macros/s/AKfycb...์žฅ๋‚œ์•„๋‹ˆ๊ฒŒ๊ธดID.../exec


4๋‹จ๊ณ„: ๋ธ”๋กœ๊ทธ/์›น์‚ฌ์ดํŠธ์— URL ํ†ตํ•ฉ

๋ณต์‚ฌํ•œ URL์„ ์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ํ‘œ์‹œํ•  ๋ธ”๋กœ๊ทธ๋‚˜ ์›น์‚ฌ์ดํŠธ์˜ HTML/JavaScript ์ฝ”๋“œ์— ์ ์šฉํ•ฉ๋‹ˆ๋‹ค.

  • ๋ธ”๋กœ๊ทธ ํ…Œ๋งˆ์˜ HTML ํŽธ์ง‘ ๋ชจ๋“œ๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  • ์•„๋ž˜ ์ค„์„ ์ฐพ์•„์„œ, ๋‹น์‹ ์ด ๋ณต์‚ฌํ•œ /exec URL๋กœ ๊ต์ฒดํ•ฉ๋‹ˆ๋‹ค.

JavaScript
const MY_PROXY = 'https://script.google.com/macros/s/๋‹น์‹ ์ด-๋ณต์‚ฌํ•œ-๊ธด-ID/exec';
  • ์ €์žฅ ํ›„ ๋ธ”๋กœ๊ทธ๋ฅผ ์ƒˆ๋กœ๊ณ ์นจํ•˜์—ฌ ์‹ค์‹œ๊ฐ„ ํ‹ฐ์ปค๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.


5๋‹จ๊ณ„: ๋ฐฐํฌ ์„ฑ๊ณต ์—ฌ๋ถ€ 3์ดˆ ํ…Œ์ŠคํŠธ

๋ฐฐํฌ๋œ URL์ด ์ •์ƒ ์ž‘๋™ํ•˜๋Š”์ง€ ๊ฐ€์žฅ ๋น ๋ฅด๊ฒŒ ํ™•์ธํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

  1. ๋ธŒ๋ผ์šฐ์ € ์ƒˆ ํƒญ์„ ์—ด๊ณ  3๋‹จ๊ณ„์—์„œ ๋ณต์‚ฌํ•œ /exec URL๋งŒ ๋ถ™์—ฌ๋„ฃ๊ณ  ์—”ํ„ฐ๋ฅผ ์นฉ๋‹ˆ๋‹ค.

  2. ํ™”๋ฉด์— ์•„๋ž˜์™€ ๊ฐ™์ด JSON ํ˜•์‹์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ์ถœ๋ ฅ๋˜๋ฉด 100% ์„ฑ๊ณต์ž…๋‹ˆ๋‹ค.

JSON
[{"keyword":"์ฝ”์Šคํ”ผ 2600","link":"https://www.google.com/search?q=..."},{"keyword":"ํ™˜์œจ 1480์›",...}]

๐Ÿ“Œ ๋งŒ์•ฝ "๊ฒ€์ฆ๋˜์ง€ ์•Š์Œ" ํ™”๋ฉด์ด ๋˜ ๋œจ๊ฑฐ๋‚˜ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด?

์ด ๋ฌธ์ œ๋Š” ์ฃผ๋กœ ์•ก์„ธ์Šค ๊ถŒํ•œ์ด "๋‚˜"๋กœ ์„ค์ •๋˜์–ด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๋•Œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

  1. 【๋ฐฐํฌ】【๋ฐฐํฌ ๊ด€๋ฆฌ】๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.

  2. ๋ชฉ๋ก์— ์žˆ๋Š” ๊ธฐ์กด ๋ฒ„์ „ ์˜†์˜ ์—ฐํ•„ ์•„์ด์ฝ˜ (์ˆ˜์ •)์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

  3. ์•ก์„ธ์Šค ๊ถŒํ•œ ์„ค์ •์„ ๋‹ค์‹œ “๋ˆ„๊ตฌ๋‚˜(์ต๋ช… ํฌํ•จ)”๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

  4. 【์—…๋ฐ์ดํŠธ】 ๋ฒ„ํŠผ์„ ํด๋ฆญํ•ฉ๋‹ˆ๋‹ค.

์ด์ œ ์ง„์งœ ๋์ž…๋‹ˆ๋‹ค. ์ด ๊ฐ€์ด๋“œ๋Œ€๋กœ๋งŒ ํ•˜์‹œ๋ฉด ๋ˆ„๊ตฌ๋‚˜ 5๋ถ„ ์•ˆ์— ์‹ค์‹œ๊ฐ„ ๊ฒฝ์ œ ํ‹ฐ์ปค ์™„์„ฑํ•ฉ๋‹ˆ๋‹ค!

#๊ฐ€๋‚˜ ํˆฌ๋ฐ์ด #ganatoday

๊ทธ๋ฆฐ์•„ํ”„๋กœ

์ธ๊ธฐ ๊ธ€

prfparkst

๋ฒ„ํ‚ท๋ฆฌ์ŠคํŠธ, ๊ฑธ์–ด์„œ122๊ฐœ๊ตญ์—ฌํ–‰, ์ฑ—์ง€ํ”ผํ‹ฐ, ์• ๋“œ์„ผ์Šค,๋ธ”๋กœ๊ทธ,์‹œ๋‚˜๋ฆฌ์˜ค,์ˆ์ธ 

๋Œ“๊ธ€ ์“ฐ๊ธฐ

๋‹ค์Œ ์ด์ „