반응형

분류 전체보기 681

Apps Script로 Upbit api를 이용해 코인 시세를 매일 아침에 Telegram으로 조간 브리핑 받기

나는 비트코인이 물려있다. 빠른 시간에 탈출을 해야 한다. 그렇기 때문에 매일 아침 상황이 어떤지 확인하고 싶다. upbit에서 제공하는 api를 이용한다. function upbitMorningBriefing () { const coinArr = ["BTC","ETH", "XRP"]; var message = ""; for (i in coinArr) { const url = `https://api.upbit.com/v1/ticker?markets=KRW-${coinArr[i]}`; const response = UrlFetchApp.fetch(url, { method : "GET", header:{ "contentType" : "application/json" } }); const json = resp..

GCP/Apps Script 2023.01.03

Apps Script로 Google Sheets에서 Dropdown의 multi select(다중선택) 구현

현재 ‘code’ 라는 시트의 데이터를 Dropdown(선택상자, SelectBox) 을 조회 조건으로 사용 중이다. ‘testSheet’ 라는 시트에서, G/L 계정의 조회 조건을 다중 선택을 하고 싶다는 요구 사항을 받았다. Google sheets에서 제공하는 기능은 없었고, 커스텀이 필요했다. 앞의 코드를 선택하면, 코드에 부합하는 뒤의 명칭을. 뒤의 명칭을 선택하면, 명칭에 부합하는 앞의 코드를 뿌려주는 기능도 물론 포함이다. 일단, onEdit() 트리거를 사용한다. code 와 명칭이 변경될때 event를 생성한다. /** * edit event * @param {object} e = event */ function onEdit(e) { const getValue = e.value; cons..

GCP/Apps Script 2023.01.02

AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 파티션 구조로 저장하기

1억 건이 넘는 데이터를 한 파일로 S3에 저장했다. parquet 파일로 저장을 했고, 파일이 2GB가 넘는다. Athena에서 count 쿼리를 날려보니 1억 2천 건이다. Select * FROM table 명령어를 날려본다. 조회하는데 12분이 걸린다. 해당 데이터는 날짜기준 컬럼이 있다. 이 컬름을 기준으로 파티셔닝을 진행해본다. spark 의 partitionBy() 를 사용한다. partitionBy 에서 파티셔닝 할 컬럼명을 입력해준다. import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue...

AWS 2023.01.02

Apps Script로 공공데이터 포털 openAPI 데이터를 매일 Telegram으로 받기

매일 주택청약 확인을 위해 홈페이지를 들어갔다. https://www.applyhome.co.kr/ai/aib/selectSubscrptCalenderView.do#a 매일 홈페이지를 들어가지 않고, 공공데이터 포털에서 제공하는 데이터를 Telegram 메세지로 받아보도록 해봤다. 1. telegram bot 설정하기 BotFather 을 검색하고 인증되어 있는 BotFather을 선택한다. /start 를 입력하고, /newbot 으로 bot을 생성한다. 생성할 bot 이름을 입력한다. 입력하면 토큰을 발 받을 수 있다. getUpdates url 을 호출하면 빈값을 반환한다. https://api.telegram.org/bot${token}/getUpdates {"ok":true,"result":[{..

GCP/Apps Script 2022.12.29

Apps Script로 MSSQL 데이터를 분단위 trigger로 sync 유지하기

mssql 의 데이터를 가져와 Google Sheets에 데이터를 뿌려 줘 본다. 해당 Google Sheets의 데이터들의 내용을 주기적으로 MSSQL 데이터와 sync를 맟추고 싶다. 이를 해결하기 위해, Apps Script에서 제공하는 Trigger 중 Time-driven 을 이용한다. 일단 MSSQL의 데이터를 해당 sheet에 뿌려준다. const address = 'mssql ip address'; const port = 'mssql port'; const user = 'mssql user'; const userPwd = 'mssql password'; const db = 'mssql database'; const dbUrl = `jdbc:sqlserver://${address}:${por..

GCP/Apps Script 2022.12.27

AWS Glue에서 Spark를 이용해 MSSQL 데이터를 S3에 저장하기

python job을 생성하여 싱글노드로 MSSQL 데이터를 S3에 저장하다보니, 데이터의 양이 1억건이 넘어가면 메모리부족이 발생했다. 데이터 사이즈가 큰 테이블의 경우에는, Spark을 이용해 분산저장을 해야겠다. 일단 Glue Job에서, [Spark script editor] 을 통해 Spark job을 생성한다. import sys from awsglue.transforms import * from awsglue.utils import getResolvedOptions from pyspark.context import SparkContext from awsglue.context import GlueContext from awsglue.job import Job ## @params: [JOB_NA..

AWS 2022.12.26

AWS Glue에서 pymssql 을 이용해 MSSQL 데이터를 S3에 저장하기

AWS Glue를 이용해, MSSQL 의 데이터를 S3에 저장하는 기능을 구현하려한다. Glue 에서 [Python Shell script editor] 를 생성한다. python shell script로 생성하면. gule 1.0으로 생성된다. https://docs.aws.amazon.com/glue/latest/dg/release-notes.html AWS Glue versions - AWS Glue AWS Glue versions You can configure the AWS Glue version parameter when you add or update a job. The AWS Glue version determines the versions of Apache Spark and Python ..

AWS 2022.12.26

관리용 Apps Script로 여러개의 Google Sheets 템플릿 관리하기

아래와 같이 동일한 템플릿의 여러 Google Sheets 파일들을 관리해야 할 경우가 발생할 수 있을것이다. 영업팀의 경우, 서울 영업팀, 부산 영업팀의 Google Sheets들이 따로따로 존재할 것이고, 서울, 부산의 sheet 템플릿에 동일한 수정이 필요할 경우가 생길것이다. 연락처라는 항목 뒤에 다른 항목을 추가하려고 한다. 10개의 사업소일 경우, 모든 사업소의 파일을 열어 수정해주어야 할것이다. Google Sheets들의 URL 들을 가지고, 모든 sheet의 항목을 한번에 추가 할 수있다. 먼저 파일들의 url들을 변수로 선언해주고, 변수들을 배열에 담아, loop를 돌아주면서 주어진 셀에 모두 같은 값과 서식을 지정해주는 방식으로 구현하면 모든파일을 다 수정할필요 없이, Apps Scr..

GCP/Apps Script 2022.12.21
반응형