- 구글 스프레드 시트에서 데이터 가져오기
애플리케이션에서 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);
}
}