반응형
자신의 구글 드라이브에 있는 엑셀 (스프레드시트)에 접속하여 데이터를 가져오는 방법을 알아보자.
우선 google-spreadsheet에 접근할 수 있는 Js를 다운로드 받자.
1 | npm i google-spreadsheet --save | cs |
https://www.npmjs.com/package/google-spreadsheet
구글 스프레드 시트 만들기
구글 드라이브에 스프레드 시트를 만들자. 저 주소 URL에 블록처리되어있는 부분이 바로 키로 사용된다
그리고 이 스프레드 시트에 접속할 수 있는 계정을 만들어야한다. https://console.developers.google.com 이곳에 접속하여 사용자를 만들고 키를 생성한다. (단순하게 들어가서 확인해보면 무리없이 만들 수 있다.)
키 만들기 버튼을 이용해서 키를 생성하면 해당 키드는 json 파일로 떨어지는데 이곳에 private_pw와 ID등이 들어있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 | // 가짜 데이터 { "type": "service_account", "project_id": "ringed-dispatch-157300", "private_key_id": "0467e31241242428c12412421412449234960ae3c749e1609c5e3ca53b41", "private_key": "-----BEGIN PRIVATE KEY-----\8iBnuPwiI\n5/ZUYY3yv2n5+UAs+dLVAYo=\n-----END PRIVATE KEY-----\n", "client_email": "820847001811221412412214124236-compute@developer.gserviceaccount.com", "client_id": "1060476412312214212323ㄴㅇㅁㄹㄴㅇ5255744659718", "auth_uri": "https://accounts.google.com/o/oauth2/auth", "token_uri": "https://oauth2.googleapis.com/token", "auth_provider_x509_cert_url": "https://www.googleapis.com/oauth2/v1/certs", "client_x509_cert_url": "https://www.googleapis.com/robot/v1/metadata/x509/820847001836-compute%40developer.gserviceaccount.com" } | cs |
그리고 이 사용자에게 해당 문서의 권한을 공유 해준다.
google-spreadsheet 라이브러리를 가져와서 사용자 정보를 입력하고 URL KEY를 이용해서 접속하면 해당 스프레드 시트에 접속할 수 있고 조작 및 정보를 가지고 올 수 있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | /** * Created by we on 2018. 9. 5. */ 'use strict'; const GoogleSpreadsheet = require('google-spreadsheet'); const defer = require('../defer'); // spreadsheet key is the long id in the sheets URL const config = require('../../config/config'); class WedulData { constructor() { this.doc = new GoogleSpreadsheet(config.google.key); } async _initDoc() { await defer(this.doc, this.doc.useServiceAccountAuth)(config.google.credit); return await defer(this.doc, this.doc.getInfo)(); } async readSheetData() { const sheet = (await this._initDoc()).worksheets[0]; const rows = await defer(sheet, sheet.getRows)({offset: 1, limit: 100}); return rows; } } module.exports = new WedulData(); | cs |
결과
반응형
'web > node.js' 카테고리의 다른 글
node.js 애플리케이션 프로세스 관리 도구 매니저 (2) | 2018.10.06 |
---|---|
request-promise를 통해 가져온 euc-kr 문자열 인코딩 문제 해결 (iconv) (6) | 2018.10.06 |
router 경로 enumset 처럼 받는 방법과 테스트 사이트 (0) | 2018.10.05 |
node.js에 swagger 적용 (4) | 2018.10.05 |
node.js에서 winston.js를 이용하여 로그 남겨보기. (0) | 2018.10.05 |