기상청 API를 사용한 비오는 날만 알려주는 LINE Notify 작성

개요



지금까지 기상청의 기상 데이터는 스크래핑을 하는 것으로 밖에 얻을 수 없었습니다만, 1개월 정도 전에 기상청 HP가 API화했다(엄밀한 API가 아닌 것 같다)라고 하는 것으로 조속히 사용해 가려고 생각합니다.

이번에 만드는 것은
  • 기상청 HP에서 API로 일기 예보 데이터 얻기
  • 비오는 날만 LINE Notify로 알림

  • 라는 단순한 것으로, GoogleAppsScript를 사용해 구현해 갑니다.

    기상청 API



    먼저 기상청의 API 사양을 파악해야 합니다. 이 기사가 상세합니다.
  • 기상청 홈페이지 방재 기상 정보 URL 구조

  • 또한 F12를 누르면 표시되는 개발자 도구에서도 볼 수 있으며 Chrome의 경우 다음과 같이 볼 수 있습니다.
  • 검색 할 정보가 표시된 페이지를 엽니 다.
  • F12
  • Network
  • 리로드(ctrl+R or F5)
  • XHR을 선택하고 순서대로 살펴 보겠습니다
  • 미리보기 표시



  • 이 때 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 토큰을 얻어야합니다. 아래의 기사가 상세합니다.
  • GAS 초입문 ⑦ - 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에서 정기 실행



    다음 기사가 도움이 될 것입니다.
  • 【Google Apps Script】그 8 스크립트를 정기 실행해, 비트코인의 1분마다의 가격을 자동 취득한다

  • 이런 느낌으로 설정하면 매일 아침 정기 실행하고 강수 확률이 높은 날만 알려줍니다.



    실제로 알림이 왔습니다!



    참고문헌


  • 기상청 홈페이지 방재 기상 정보 URL 구조
  • GAS 초입문 ⑦ - LINE에 통지해 보기
  • 【Google Apps Script】그 8 스크립트를 정기 실행해, 비트코인의 1분마다의 가격을 자동 취득한다
  • 좋은 웹페이지 즐겨찾기