[Node.js] googleapis 사용한 Googel Spread Sheet 연동[Node.js] googleapis 사용한 Googel Spread Sheet 연동
Posted at 2020. 8. 26. 14:41 | Posted in Node.js/Google Spread SheetAPI : https://developers.google.com/sheets/api/reference/rest
참고 : https://www.youtube.com/watch?v=MiPpQzW_ya0
$ npm install googleapis@59.0.0 // 해당 포스팅은 59.0.0 버전을 사용함 |
■ 구글 시트 데이터 읽어오고, 출력하기
# 원본데이터 - 구글시트
# 소스코드
google_sheet_select.js |
const {google} = require( "googleapis" ); const keys = require( "./사용자_계정_KEY.json" ); const client = new google.auth.JWT( keys.client_email , null , keys.private_key , [ 'https://www.googleapis.com/auth/spreadsheets' ] // 사용자 시트 및 해당 속성에 대한 읽기/쓰기 액세스 허용 ); client.authorize( function( err, tokens ) { if( err ) { console.log( err ); return; } else { gsrun( client ); } }); async function gsrun( client ) { const sheets = google.sheets( { version : "v4", auth : client } ); const request = { spreadsheetId : "구글_시트_아이디" , range : "시트_이름!A2:D10" // , range : "twice" // 범위를 지정하지 않으면 해당 Sheet의 모든 Shell 값을 가져온다. }; const response = ( await sheets.spreadsheets.values.get( request ) ).data; console.log( response ); } |
# 출력결과
■ 구글 시트 데이터 읽고, 데이터 가공하기
# 원본데이터 - 구글시트
# 소스코드
google_sheet_processing.js |
const {google} = require( "googleapis" ); const keys = require( "./사용자_계정_KEY.json" ); const client = new google.auth.JWT( keys.client_email , null , keys.private_key , [ 'https://www.googleapis.com/auth/spreadsheets' ] // 사용자 시트 및 해당 속성에 대한 읽기/쓰기 액세스 허용 ); client.authorize( function( err, tokens ) { if( err ) { console.log( err ); return; } else { gsrun( client ); } }); async function gsrun( client ) { const sheets = google.sheets( { version : "v4", auth : client } ); const request = { spreadsheetId : "구글_시트_아이디" , range : "시트_이름!A2:F7" }; const response = ( await sheets.spreadsheets.values.get( request ) ).data; const responseArray = response.values; // console.log( responseArray ); // @see LAST NAME과 FIRST NAME을 합친다 let realNames = new Array(); responseArray.map( function( val ) { realNames.push( val[2] + " " + val[3] ); return realNames; }); console.log( realNames ); } |
■ 구글 시트 데이터 입력하기
# 소스코드
google_sheet_appends.js |
const {google} = require( "googleapis" ); const keys = require( "./사용자_계정_KEY.json" ); const client = new google.auth.JWT( keys.client_email , null , keys.private_key , [ 'https://www.googleapis.com/auth/spreadsheets' ] // 사용자 시트 및 해당 속성에 대한 읽기/쓰기 액세스 허용 ); client.authorize( function( err, tokens ) { if( err ) { console.log( err ); return; } else { gsrun( client ); } }); async function gsrun( client ) { const sheets = google.sheets( { version : "v4", auth : client } ); let memberArray = new Array(); memberArray[0] = new Array( "1", "윤채경", "1996-07-07", "서브보컬" ); memberArray[1] = new Array( "2", "김채원", "1997-11-08", "메인보컬" ); memberArray[2] = new Array( "3", "이나은", "1999-05-05", "센터, 서브보컬" ); memberArray[3] = new Array( "4", "양예나", "2000-05-22", "메인댄서, 리드래퍼, 서브보컬" ); memberArray[4] = new Array( "5", "레이첼", "2000-08-28", "메인댄서, 리드댄서, 서브보컬" ); memberArray[5] = new Array( "6", "이진솔", "2001-12-04", "리드보컬, 막내" ); const request = { spreadsheetId : "구글_시트_아이디" , range : "시트_이름" , valueInputOption : "USER_ENTERED" , insertDataOption : "OVERWRITE" // OVERWRITE or INSERT_ROWS 선택 , resource : { values : memberArray } }; const response = await sheets.spreadsheets.values.append( request ); console.log( response ); } |
# valueINputOption 설정
설정값 |
설명 |
INPUT_VALUE_OPTION_UNSPECIFIED | · 기본 입력 값, 이 값은 사용해서는 안 된다. |
RAW |
· 사용자가 입력한 값은 구문 분석되지 않고 그대로 저장된다. |
USER_ENTERED |
· 사용자가 UI에 입력한 것처럼 값을 구문 분석한다. · 숫자는 숫자로 유지되지만 문자열은 구글 시트 UI를 통해 셀에 텍스트를 입력할 때 적용되는 것과 동일한 규칙에 따라 숫자, 날짜 등으로 변환될 수 있다. |
# insertDataOption 설정
설정값 |
설명 |
OVERWRITE |
입력되는 데이터값은, 작성된 영역의 셀서식을 그대로 따른다. |
INSERT_ROWS |
입력되는 데이터값은, 입력이 시작될 행의 바로 위에 위치한 행의 셀서식을 그대로 따른다. |
# 출력결과 - 구글시트
$ node google_sheet_appends.js |
■ 구글 시트 데이터 수정하기
# 소스코드
google_sheet_update.js |
const {google} = require( "googleapis" ); const keys = require( "./사용자_계정_KEY.json" ); const client = new google.auth.JWT( keys.client_email , null , keys.private_key , [ 'https://www.googleapis.com/auth/spreadsheets' ] // 사용자 시트 및 해당 속성에 대한 읽기/쓰기 액세스 허용 ); client.authorize( function( err, tokens ) { if( err ) { console.log( err ); return; } else { gsrun( client ); } }); async function gsrun( client ) { const sheets = google.sheets( { version : "v4", auth : client } ); let memberArray = new Array(); memberArray[0] = new Array( "1", "쥬리", "1997-10-06", "서브보컬" ); memberArray[1] = new Array( "2", "연희", "2000-12-06", "리더, 리드보컬" ); memberArray[2] = new Array( "3", "수윤", "2001-03-17", "메인보컬" ); memberArray[3] = new Array( "4", "윤경", "2001-11-01", "메인댄서, 서브보컬" ); memberArray[4] = new Array( "5", "소희", "2003-08-14", "서브보컬" ); memberArray[5] = new Array( "6", "다현", "2005-04-29", "서브보컬" ); const request = { spreadsheetId : "구글_시트_아이디" , range : "시트_이름!A2" // 범위를 지정해 주지 않으면 A1 행부터 데이터를 덮어 씌운다. , valueInputOption : "USER_ENTERED" , resource : { values : memberArray } }; const response = await sheets.spreadsheets.values.update( request ); console.log( response ); } |
# 출력결과 - 구글시트
$ node google_sheet_update.js |
■ 구글 시트 데이터 복사, 붙여넣기
# 소스코드
google_sheet_copy.js |
const {google} = require( "googleapis" ); const keys = require( "./사용자_계정_KEY.json" ); const client = new google.auth.JWT( keys.client_email , null , keys.private_key , [ 'https://www.googleapis.com/auth/spreadsheets' ] // 사용자 시트 및 해당 속성에 대한 읽기/쓰기 액세스 허용 ); client.authorize( function( err, tokens ) { if( err ) { console.log( err ); return; } else { gsrun( client ); } }); async function gsrun( client ) { const sheets = google.sheets( { version : "v4", auth : client } ); const selectRequest = { spreadsheetId : "구글_시트_아이디" , range : "복사할_시트_이름!A2:A6" }; const selectResponse = ( await sheets.spreadsheets.values.get( selectRequest ) ).data; const responseArray = selectResponse.values; const updateRequest = { spreadsheetId : "구글_시트_아이디" , range : "붙여넣기할_시트_이름!D2" , valueInputOption : "USER_ENTERED" , resource : { values : responseArray } }; const response = await sheets.spreadsheets.values.append( updateRequest ); console.log( response ); } |
# 출력결과 - 구글시트
$ node google_sheet_copy.js |
'Node.js > Google Spread Sheet' 카테고리의 다른 글
[Node.js] Google Spread Sheet 수정 및 삭제하기 (5) | 2019.06.11 |
---|---|
[Node.js] Google Spread Sheet에 데이터 입력하기 (0) | 2019.06.11 |
[Node.js] Google Spread Sheet의 데이터 가져오기 (0) | 2019.06.10 |
[Node.js] Google Spread Sheet 연동하기 (2) | 2019.06.10 |