[API][Apps Script] 공공 데이터 포탈에서 공휴일 API 가져오기
구글 apps script를 이용하여 특정 사용자에게 특정 시간에 메일을 전송하는 스크립트를 생성하여 사용하고 있다.
공휴일엔 메일을 보내지 않는 기능을 구현하고 싶은데,
구글 캘린더에서 제공하는 휴일 캘린더는 식목일 같은 공휴일이 아닌 날에도 공휴일로 제공을 하여 방법을 찾아보니
공공데이터 포탈에서 제공하는 공휴일 정보 API를 불러와서 사용하는 방법이 있었다.
공공 데이터 포탈 API 키 신청
공공 데이터 포탈
데이터 찾기에 공휴일을 검색 한 후 오픈 API 탭으로 가면 제일 위에 한국 천문 연구원 특일 정보가 나온다.
활용 신청 후 API 키가 발급된다.
API 가져오기
API를 가져오는 샘플 코드 또한 공공데이터 포탈에서 확인할 수 있다.
apps script를 이용하여 API를 가져오는 방법은 기존 자바스크립트 방식과는 조금 달랐는데,
apps script의 문법은 아래 문서에서 확인할 수 있었다.
외부 API 연결
http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/ + getRestDeInfo (공휴일 정보) + apiKey + 파라미터
위 조합으로 공휴일 api의 엔드포인트를 가져올 수 있다. 먼저 변수를 정의해준다.
var year = "2023"
var month = "10"
var apiKey = ''; //apiKey
var url = 'http://apis.data.go.kr/B090041/openapi/service/SpcdeInfoService/getRestDeInfo?serviceKey=' + apiKey + '&solYear=' + year + '&solMonth=' + month //api endpoint as a string
그 후 api endpoint를 가져온다.
var response = UrlFetchApp.fetch(url);
var xml = response.getContentText();
var doc = XmlService.parse(xml);
var xml_rows = doc.getRootElement().getChild('body').getChild('items').getChildren('item');
RootElement에서부터 Child 를 가지고오는데 구조는 샘플 데이터에서 확인 할 수 있다.
공휴일 조회에서 확인하고 싶은 연도와 월을 입력하고 미리보기를 확인하면
다음과 같이 구조를 확인할 수 있다.
빈 리스트를 하나 만들고 요소를 하나씩 가져와 리스트에 저장해준다.
var holiday = []
for (var i = 0; i < xml_rows.length; i++) {
var h = xml_rows[i].getChild('locdate').getText()
holiday.push(h)
}
오늘 날짜가 holiday에 포함이 되어있으면 메일을 보내지않고 함수를 종료한다.
if (holiday.includes(today)) {
return;
}
참고
https://m.blog.naver.com/PostView.naver?blogId=eye_mong85&logNo=222297724553&proxyReferer=
'👩💻 Develope > Web' 카테고리의 다른 글
[etc] 옵시디언(obsidian) 무료로 퍼블리시 하기 (0) | 2024.03.07 |
---|---|
[FastAPI] FastAPI 알아보기 (0) | 2023.12.12 |
[Django/React] 장고와 리액트 연동 (3) (0) | 2023.10.13 |
[Django/React] 장고와 리액트 연동 (2) (0) | 2023.10.12 |
[Django/React] 장고와 리액트 연동 (1) (0) | 2023.10.11 |