도로명 주소를 한국GPS 로 받으려고 합니다.

구글 API 를 사용해서 좌표를 GPS 로 변경 할 수 있지만, 이렇게 하면, 몇몇 주소들은 undefined 되는 값이 나온다. 이 사실을 인지했을 때에는 이미 늦어버린 후였고. 어쩔수 없이 다른 방법을 통해서 GPS 좌표를 구해서 DB에 구해서 작업을 하려고 한다.

내가 개발자는 아니어서 개인적으로는 네이버나 다음 API 를 이용해서 GEOCODER를 통해서 해결하면 되는 일이겠다 생각하지만, 개발사입장에서는 그게 쉬운일이 아닌가 보다. (왜 어려운지 모르겠다.)

아무튼 google spreadsheet 로 도로명 주소를 gps 좌표로 보려고 합니다.

준비물

  • 네이버 or 다음 개발자 등록
  • 구글 계정

순서

(네이버 개발자)를 기준으로 작업을 하려고한다.

네이버 API 를 사용하기 위해서는 개발자 등록을 해야한다.

네이버에 애플리케이션 등록(API 이용신청)을 합니다.

Imgur

애플리케이션 정보는 보는 곳에서 위의 정보를 얻어올 수 있습니다.

Imgur

스프레드시트를 불러서 스크립트 작성을 시작 합니다.

Imgur

저는 주소를 좌표로 변환하는 API 를 사용해서 하려고 합니다.

주소 -> 좌표 변환 API GET https://openapi.naver.com/v1/map/geocode (json) https://openapi.naver.com/v1/map/geocode.xml (xml) JSON / XML 주소를 좌표로 변환

JSON 를 사용해서 하려고 햇는데, google spreadsheet API 문서를 보니 jsonParse 기능이 이제 지원을 안한다는 문구가 있어서 부득이 XML을 사용했습니다.

function getXML(addr) {
  var point = {};
  var apiURL = 'https://openapi.naver.com/v1/map/geocode.xml?query='+addr;
  var option = {
    'method' : 'get',
    'headers' : {
      'X-Naver-Client-Id' : '네이버 클라이언트 아이디',
      'X-Naver-Client-Secret' : '네이버 시크릿'
    }
  };
  var xml = UrlFetchApp.fetch(apiURL,option).getContentText();
  var doc = XmlService.parse(xml);
  var root = doc.getRootElement();
  Logger.log(xml);

  var lng = root.getChild('items').getChild('item').getChild('point').getChild('x').getText();
  var lat = root.getChild('items').getChild('item').getChild('point').getChild('y').getText();

  point = { lng : lng, lat : lat};

  return point;
}

function myFunction() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var cell = sheet.getActiveCell(); // active cell
  var addr = cell.getValue(); 
  Logger.log(addr);
  var point = getXML(addr);

  // 오른쪽 두개에 입력하기
  var cellright2 = cell.offset(0, 2);
  var cellright3 = cell.offset(0, 3);

  // 입력
  cellright2.setValue(point.lat);
  cellright3.setValue(point.lng);
}

네이버 클라이언트 아이디와 시크릿 코드를 코드에 삽입합니다.

주소를 입력해 둔 시트에 가서 커서를 올려둡니다.

Imgur

스크립트 입력 페이지에서 스크립트를 실행합니다.

커서 오른쪽 두칸뒤애 좌표가 추가되는 것을 확인 할 수 있습니다.

Imgur

조금편하게 사용하게 GUI 를 추가를 하고 잇는 중입니다만, 금방 때려칠 꺼 같은 귀찮음!

반응형

+ Recent posts