기상청 API를 사용한 비오는 날만 알려주는 LINE Notify 작성
개요
지금까지 기상청의 기상 데이터는 스크래핑을 하는 것으로 밖에 얻을 수 없었습니다만, 1개월 정도 전에 기상청 HP가 API화했다(엄밀한 API가 아닌 것 같다)라고 하는 것으로 조속히 사용해 가려고 생각합니다.
이번에 만드는 것은
라는 단순한 것으로, GoogleAppsScript를 사용해 구현해 갑니다.
기상청 API
먼저 기상청의 API 사양을 파악해야 합니다. 이 기사가 상세합니다.
또한 F12를 누르면 표시되는 개발자 도구에서도 볼 수 있으며 Chrome의 경우 다음과 같이 볼 수 있습니다.
이 때 Name의 주소가 엔드 포인트입니다.
GAS로 처리
GAS에서 api를 이용할 때는 다음과 같이 기술합니다.
let response = UrlFetchApp.fetch("https://www.jma.go.jp/bosai/forecast/data/forecast/120000.json");
let response_json = JSON.parse(response.getContentText());
responce_json의 내용을보고 싶은 정보를 따르십시오.
let weather = response_json[0]["timeSeries"][0]["areas"][0]["weathers"][0];
weather = weather.replace(/ /g, "");
let rainy_percent = response_json[0]["timeSeries"][1]["areas"][0]["pops"];
rainy_percent = rainy_percent.slice(0, 4);
강수 확률이 높은지 여부의 조건 분기와 LINE으로 보내고 싶은 문자를 결정합니다
if (rainy_percent.filter(element => element >= 50).length == 0){
return
}
let text =
`\n今日の天気:${weather}
降水確率: 6時-\t${rainy_percent[0]}%
12時-\t${rainy_percent[1]}%
18時-\t${rainy_percent[2]}%`
sendLINE(text)
LINE Notify에 알림
먼저 LINE 토큰을 얻어야합니다. 아래의 기사가 상세합니다.
let response = UrlFetchApp.fetch("https://www.jma.go.jp/bosai/forecast/data/forecast/120000.json");
let response_json = JSON.parse(response.getContentText());
let weather = response_json[0]["timeSeries"][0]["areas"][0]["weathers"][0];
weather = weather.replace(/ /g, "");
let rainy_percent = response_json[0]["timeSeries"][1]["areas"][0]["pops"];
rainy_percent = rainy_percent.slice(0, 4);
if (rainy_percent.filter(element => element >= 50).length == 0){
return
}
let text =
`\n今日の天気:${weather}
降水確率: 6時-\t${rainy_percent[0]}%
12時-\t${rainy_percent[1]}%
18時-\t${rainy_percent[2]}%`
sendLINE(text)
먼저 LINE 토큰을 얻어야합니다. 아래의 기사가 상세합니다.
얻으면 코드는 간단합니다. 복사하고 방금 취득한 토큰 부분만 다시 쓰면 됩니다.
function sendLINE(text) {
let messageText = text
let token = "先ほど取得したトークン"
let options = {
"method" : "post",
"headers" : {
"Authorization" : "Bearer "+ token
},
"payload" : {
"message" : messageText
}
}
let url = "https://notify-api.line.me/api/notify"
UrlFetchApp.fetch(url, options)
}
GAS에서 정기 실행
다음 기사가 도움이 될 것입니다.
이런 느낌으로 설정하면 매일 아침 정기 실행하고 강수 확률이 높은 날만 알려줍니다.
실제로 알림이 왔습니다!
참고문헌
Reference
이 문제에 관하여(기상청 API를 사용한 비오는 날만 알려주는 LINE Notify 작성), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/eycjur/items/4e4b3cc52e6cc04cc1cc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)