도로명 주소를 한국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 를 추가를 하고 잇는 중입니다만, 금방 때려칠 꺼 같은 귀찮음!

반응형

엑셀에서 보면 쓸데없이 행이 많은 경우가 있다. 이를 삭제 하려고 봤더니 excel 2013 에서는 쓸데없는 행을 정리해 주는 항목이 있다고 한다. 그런데 2016를 사용하는 나에게는 그런게 전혀 보이지 않는다.

Imgur

위와 같은 상황에서 행을 분리하고 909행에 데이터를 남기고 910~915행을 삭제하는 방법이다.

수동으로

수동으로 하는 방법은 행을 분리->나머지 행을 삭제하는 방법이다.

Imgur

이렇게 행을 드레그 해서 선택하고

Imgur

[홈] - [병합하고 가운데 맞춤]을 사용해서 분리한다.ㅇ

그리고 [마우스 오른쪽클릭] - [삭제] 를 누르는 방법이다.

매크로

ALT+F11로 매크로 수정창을 연다.

아래와 같은 매크로를 추가한다.

Sub 쓸데없는행삭제하기()
    Dim lastrow As Integer
    lastrow = Selection.Rows.Count
    Do While lastrow > 1
        Rows(Selection.Row + 1).delete
        lastrow = lastrow - 1
    Loop     
End Sub

Imgur

삭제할 데이터의 행에 클릭을 한 후에 ALT+F8울 눌러서 방금 만들어 놓은 매크로를 실행한다.

909행을 빼고 나머지 행들이 제거된 것을 알 수 있다.

반응형

'컴퓨터' 카테고리의 다른 글

워드 2016에서 Metablog 추가하기  (0) 2017.02.21
돌비 애트모스  (0) 2017.01.31
window 10 ctrl 와 caps lock 변경하기  (0) 2016.12.19
git 최초 설정  (0) 2016.10.18
MS Ergonomic Mouse vs 제닉스 Storm M2  (0) 2016.10.01

+ Recent posts