[GAS] 외부에서 구글 스프레드 시트에서 데이터 가져오기 [Google Sheets에서 URL 해시 매핑 데이터 가져오기]

2024. 5. 2. 17:38·◎ JavaScript/Google App Script🐑
728x90


- 구글 스프레드 시트에서 데이터 가져오기

애플리케이션에서 URL 링크를 관리하고자 할 때, 링크의 일부를 해시 값으로 사용하여 데이터를 가져올 수 있다. GAS를 사용하여 구글 스프레드시트에서 URL 해시 매핑 데이터를 가져오는 방법에 대해 알아볼 예정이다.

예제의 스프레드 시트 구조

아래 코드는 doGet 함수와 getHashForURL 함수로 구성되어 있다.

doGet 함수는 URL 매개변수에서 'hash' 파라미터를 가져와서 해당 해시 값에 대응하는 URL 값을 반환한다. 그리고 getHashForURL 함수는 입력된 URL에 대한 해시 값을 반환하는 함수이다.
// doGet 함수는 URL 매개변수에서 'hash' 파라미터를 가져와서 해당 hash에 대한 URL 값을 반환합니다.
function doGet(e) {
  var targetHash = e.parameter.hash;  // hash 파라미터를 가져오는 부분
  
  // targetURL이 없는 경우 빈 문자열을 반환합니다.
  if (!targetHash) {
    return ContentService.createTextOutput('Please provide a URL parameter.');
  }
  
  // 입력된 URL에 대한 해시 값을 가져옵니다.
  var hash = getHashForURL(targetHash);
  
  // 가져온 해시 값을 반환합니다.
  return ContentService.createTextOutput(hash);
}

// 입력된 URL에 대한 해시 값을 반환하는 함수
function getHashForURL(targetHash) {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var data = sheet.getDataRange().getValues();
  
  // URL 컬럼과 Hash 컬럼의 인덱스를 찾습니다.
  var urlColumnIndex = -1;
  var hashColumnIndex = -1;
  for (var i = 0; i < data[0].length; i++) {
    if (data[0][i] == 'url') {
      urlColumnIndex = i;
    } else if (data[0][i] == 'hash') {
      hashColumnIndex = i;
    }
  }
  
  // 입력된 URL에 해당하는 해시 값을 반환합니다.
  for (var i = 1; i < data.length; i++) {
    var hash = data[i][hashColumnIndex];
    if (hash && hash === targetHash) { // URL 값이 존재하고 입력된 hash 값과 일치하는 경우에만 처리합니다.
      var url = data[i][urlColumnIndex];
      return url;
    }
  }
  
  // 입력된 URL에 해당하는 데이터가 없는 경우에는 빈 문자열을 반환합니다.
  return '';
}

 

이 코드는 사용자가 접속한 URL의 'hash' 파라미터를 읽어와서 해당 해시 값에 대응하는 URL 값을 반환한다.

doGet 함수에서는 URL 매개변수에서 'hash' 파라미터를 가져와서 해당 해시 값에 대응하는 URL 값을 반환하고, getHashForURL 함수에서는 입력된 URL에 대한 해시 값을 반환한다.

JavaScript에서 불러오는 방법은 아래와 같다.
// 데이터 가져오기
async function fetchData(hash) {
    try {
        const response = await fetch(`https://script.google.com/macros/s/${GOOGLE_APPS_SCRIPT_ID}/exec?s=${hash}`);
        if (!response.ok) {
            throw new Error('네트워크 응답이 올바르지 않습니다.');
        }
        const data = await response.text();
        return data;
    } catch (error) {
        console.error(error);
    }
}

728x90
'◎ JavaScript/Google App Script🐑' 카테고리의 다른 글
  • [GAS] 구글 앱 스크립트 doGet과 doPost 사용 방법 [구글 앱 스크립트로 외부 요청 처리하기]
  • [GAS] 외부에서 URL과 해시 값을 받아 스프레드시트에 저장하기 [Google Sheets에 외부 데이터 추가하기]
  • [GAS] 자동으로 구글 캘린더에 일정 추가하기 [구글 스프레드 시트와 캘린더 연동하기]
예르미(yermi)
예르미(yermi)
끊임없이 제 자신을 계발하는 개발자입니다👨🏻‍💻
  • 예르미(yermi)
    예르미의 코딩노트
    예르미(yermi)
  • 전체
    오늘
    어제
    • 분류 전체보기 (937)
      • ◎ Java (133)
        • Java☕ (93)
        • JSP📋 (26)
        • Applet🧳 (6)
        • Interview👨🏻‍🏫 (8)
      • ◎ JavaScript (48)
        • JavaScript🦎 (25)
        • jQuery🌊 (8)
        • React🌐 (2)
        • Vue.js🔰 (6)
        • Node.js🫒 (3)
        • Google App Script🐑 (4)
      • ◎ HTML5+CSS3 (17)
        • HTML5📝 (8)
        • CSS3🎨 (9)
      • ──────────── (0)
      • ▣ Framework (67)
        • Spring🍃 (36)
        • Spring Boot🍀 (12)
        • Bootstrap💜 (3)
        • Selenium🌕 (6)
        • MyBatis🐣 (10)
      • ▣ Tools (47)
        • API🎯 (18)
        • Library🎲 (15)
        • JitPack🚀 (3)
        • Jenkins👨🏻 (7)
        • Thymeleaf🌿 (4)
      • ▣ Server (32)
        • Apache Tomcat🐱 (14)
        • Apache HTTP Server🛡️ (1)
        • Nginx🧶 (7)
        • OracleXE💿 (4)
        • VisualSVN📡 (4)
      • ▣ OS : 운영체제 (18)
        • cmd : 명령프롬프트💻 (10)
        • Linux🐧 (8)
      • ▣ SQL : Database (56)
        • Oracle SQL🏮 (26)
        • PL SQL💾 (9)
        • MySQL🐬 (6)
        • MariaDB🦦 (6)
        • H2 Database🔠 (3)
        • SQL 실전문제🐌 (6)
      • ────────── (0)
      • ◈ Human Project (86)
        • Mini : Library Service📚 (15)
        • 화면 설계 [HTML]🐯 (10)
        • 서버 프로그램 구현🦁 (15)
        • Team : 여수어때🛫 (19)
        • Custom : Student🏫 (9)
        • Custom : Board📖 (18)
      • ◈ Yermi Project (40)
        • 조사모아(Josa-moa)📬 (5)
        • Riddle-Game🧩 (6)
        • 맛있을 지도🍚 (2)
        • 어디 가! 박대리!🙋🏻‍♂️ (5)
        • 조크베어🐻‍❄️ (4)
        • Looks Like Thirty🦉 (2)
        • Toy Project💎 (12)
        • 오픈소스 파헤치기🪐 (4)
      • ◈ Refactoring (15)
        • Mini : Library Service📚 (8)
        • 서버 프로그램 구현🦁 (1)
        • Team : 여수어때🛫 (0)
        • 쿼리 튜닝일지🔧 (6)
      • ◈ Coding Test (89)
        • 백준(BOJ)👨🏻‍💻 (70)
        • 프로그래머스😎 (2)
        • 코드트리🌳 (7)
        • 알고리즘(Algorithm)🎡 (10)
      • ◈ Study (102)
        • 기초튼튼 개발지식🥔 (25)
        • HTTP 웹 지식💡 (4)
        • 클린코드(Clean Code)🩺 (1)
        • 디자인패턴(GoF)🥞 (12)
        • 다이어그램(Diagram)📈 (4)
        • 파이썬(Python)🐍 (16)
        • 에러노트(Error Note)🧱 (34)
        • 웹 보안(Web Security)🔐 (6)
      • ◈ 공부모임 (39)
        • 혼공학습단⏰ (18)
        • 코드트리 챌린지👊🏻 (2)
        • 개발도서 100독👟 (8)
        • 나는 리뷰어다🌾 (11)
      • ◈ 자격증 공부 (37)
        • 정보처리기사🔱 (16)
        • 정보처리산업기사🔅 (9)
        • 컴퓨터활용능력 1급📼 (12)
      • ─────────── (0)
      • ◐ 기타 (113)
        • 알아두면 좋은 팁(tip)✨ (46)
        • 개발자의 일상🎈 (44)
        • 개발도서 서평🔍 (10)
        • 개발관련 세미나🎤 (2)
        • 블로그 꾸미기🎀 (9)
        • 사도신경 프로젝트🎚️ (2)
  • 인기 글

  • 최근 댓글

  • 태그

    자바스크립트
    BOJ
    프로그래밍
    일상
    Project
    Database
    jsp
    CSS
    html
    백준
    javascript
    SQL
    코딩
    백준 티어
    꿀팁
    Oracle
    코딩 테스트
    Java
    spring
    Error Note
  • 250x250
  • hELLO· Designed By정상우.v4.10.3
예르미(yermi)
[GAS] 외부에서 구글 스프레드 시트에서 데이터 가져오기 [Google Sheets에서 URL 해시 매핑 데이터 가져오기]
상단으로

티스토리툴바