본문 바로가기

아주 미비한 코딩7

VBA - 버튼 하나로 PDF로 출력/저장하는 기능 만들기 배경 엑셀(excel)를 간단한 가계부 용도나, 매 번 바뀌는 데이터를 기록하는 용도(e.g. 인보이스, 견적서)로 사용하는 경우가 있다. 종이와 달리 과거 데이터까지 전부 저장한다고 하더라도 크게 제약이 있는 건 아니지만, 그래도 다른 매체로 전달할 때는 PDF 파일로 전달해야 하는 경우가 있어서 간단하게 VBA 코드를 남겨두는 목적으로 정리해봤다. PDF 출력 및 저장하기 1. 스프레드 시트 준비 먼저 스프레드 시트를 하나 준비해준다. 오늘 실습할 시트는 엑셀에서 기본적으로 제공하는 문서 양식 중 하나인 '개인 월별 예산' 파일이다. 2. 인쇄 범위 설정 VBA코드로 미리 작성하기 전에 미리 인쇄범위를 설정해준다. 인쇄미리보기를 통해 확인 해준다. 3. VBA 코드 작성 VBA 편집기를 열어서 모듈을.. 2024. 1. 10.
[Python] 네이버 플레이스(naver place) 리뷰 크롤링 지난 번 네이버 플레이스를 통해 크롤링을 해봤는데, 이번에는 리뷰를 가져오는 코드를 실습해보았다. 특히 수집된 데이터를 다시 자연어 처리해 다른 분석을 해볼 때도 유용할 것 같다. 그리고 최근에 알게 된 사실인데, 크롤링(Crawling)과 스크래핑(Scraping)은 구분되는 개념이지만 그냥 크롤링이라는 명칭을 썼다. 사실 지금 하는 실습은 스크래핑이라는 것을 밝혀둔다. 1.탐색 네이버 리뷰는 어디서 볼 수 있을까? 네이버 리뷰는 크게 2가지 방법으로 노출되고 있는데, 네이버 맵과 네이버 플레이스다. 네이버 맵으로 접근하는 건 다른 개발블로그에서 많이 봤었고, 효율적인 코드가 많았다. 맵에서는 검색 기반이라 특정 페이지로 바로 들어가는 건 불가능하고, 오직 검색을 통해서만 접근 할 수 있다. 그런데 첫.. 2023. 11. 13.
[Python] json 파일 읽어서 csv로 저장하기 아래는 json 파일로 되어 있는 파일을 파이썬으로 읽어 엑셀로 저장하기 위한 코드이다. 우선 json은 파이썬의 딕셔너리처럼 키와 값, 두 쌍으로 이루어진 자료형식이다. 오픈 API를 사용하거나 크롤링을 진행할 때 자주 만나게 되고 아래 방법을 알기 전에는 엑셀로 전처리하기도 했는데 상당히 비효율적이고 휴먼에러가 발생한 여지가 있다. 그래서 아래와 같이 json파일을 읽어오면 휠씬 빠르게 가공하여 활용할 수 있다. import requests import pandas as pd import json url = '' #json URL response = requests.get(url) contents = response.text json_ob = json.loads(contents) body = json.. 2023. 1. 24.
[Python] 두 좌표사이의 거리 구하기 - Haversine distance 두 좌표(위도, 경도) 사이의 거리를 구할 때, 거리 측정 함수인 허버사인 거리(Haversine distance)을 사용하는데 지구의 지름을 6,371km로 두고 킬로미터 단위로 두 지점의 사이의 거리를 구해준다. 파이썬으로 나타내면 다음과 같다. from math import sin, cos, sqrt, atan2 def haversine_distance(lat1, lon1, lat2, lon2): R = 6371 # radius of Earth in kilometers dlat = lat2 - lat1 dlon = lon2 - lon1 a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2 c = 2 * atan2(sqrt(a), sqrt(.. 2023. 1. 19.
[Python] 네이버 플레이스 크롤링(selenium, BS4) 특정 지역의 데이터셋을 가지고 공부해보고 싶은게 있어서 지역 정보가 필요했다. 그런데 무식하게 긁어올 수 없어서 웹크롤러를 만들어보기로 했다. 바로 떠오른 생각은 네이버 지도에서 가져오는 것인데, 이게 생각보다 쉽지 않았다. 그래서 패쓰하고 네이버 플레이스 서비스로 접근했다. (OPEN API도 있었는데 전화번호 정보는 가져오지 못하는 한계가 있었다.) 우선 기본적인 라이브러리를 불러온다. 네이버에서는 일단 크롤링에 대해서 관대하지 않기 때문에 몇 가지 주의사항이 있다. from selenium.webdriver.common.by import By from urllib3.util.retry import Retry from requests.adapters import HTTPAdapter from bs4 .. 2022. 12. 20.
[Python] json 형식 읽기 import json from pandas.io.json import json_normalize json_string = ('json 문자열') 2022. 12. 14.
[Apps script] Google Spreadsheet에서 slack 메시지 보내기 업무용으로 구글 스프레드 시트에서 기록된 데이터를 슬랙으로 쏴주고 싶었다. 그런데 자꾸 invalid_payload 에러가 나서 한참을 해맸다. function myFunction() { var slackUrl = "https://hooks.slack.com/services/주소" ; var contents = 내용; var msg = {"text" : contents }; var option = { 'method' : 'post', 'ContentType':'application/json', 'payload': JSON.stringify(msg) }; Logger.log(option) UrlFetchApp.fetch(slackUrl, option); } 처음 찾아본 레퍼런스에서 이것저건 수정하긴 했는데.. 2022. 11. 15.