[Node.js] 디렉토리내의 파일 정보 가져오기[Node.js] 디렉토리내의 파일 정보 가져오기
Posted at 2020. 9. 7. 01:18 | Posted in Node.js■ 폴더내의 파일리스트 정보 가져오기
# 소스코드
directory_list.js |
const fs = require( "fs" ); function directoryFileListRead( callback ) { fs.readdir( "./testfolder", function( error, filelist ) { const fileArr = new Array(); let breakPoint = 0; filelist.forEach( function( file, idx, arr ) { fs.stat("./testfolder/" + file, function ( err, stats ) { fileArr.push( { fileName : file, birthTime : stats.birthtimeMs } ); // 반복문 실행회수를 더한다. breakPoint++; // 배열의 수와 반복문이 실행된 회수가 같은면, 마지막 값까지 반복문이 실행되면 콜백한다. if( arr.length === breakPoint ) { // 오름차순 정렬 // fileArr.sort(function(a, b) { return a.fileDate < b.fileDate ? -1 : a.fileDate > b.fileDate ? 1 : 0; }); // 내림차순 정렬 fileArr.sort(function(a, b) { return a.fileDate > b.fileDate ? -1 : a.fileDate < b.fileDate ? 1 : 0; }); callback( fileArr ); } }); }); }); } directoryFileListRead( function( fileArr ) { console.log( fileArr ); }); |
# 출력결과
$ node directory_list.js |
'Node.js' 카테고리의 다른 글
[Node.js] exceljs를 이용하여 Excel 파일 읽기 (0) | 2020.08.20 |
---|---|
[Node.js] HTTPS 서버 구현하기 (0) | 2020.05.20 |
[Node.js] socket 통신으로 파일 업로드 하기 (0) | 2020.05.14 |
[Noe.js] 실행시 값 입력하기 (0) | 2020.05.04 |
[Node.js] Email 발송하기 (0) | 2020.05.01 |
[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 |
[Node.js] exceljs를 이용하여 Excel 파일 읽기[Node.js] exceljs를 이용하여 Excel 파일 읽기
Posted at 2020. 8. 20. 10:35 | Posted in Node.jsnpmjs : https://www.npmjs.com/package/exceljs
github : https://github.com/exceljs/exceljs
npm install exceljs |
|
const exceljs = require("exceljs"); const workbook = new exceljs.Workbook(); workbook.xlsx.readFile("./엑셀_파일_이름.xlsx").then(function( ) { // 시트네임 const worksheet = workbook.getWorksheet("투어딜-일반"); worksheet.eachRow( { includeEmpty:true }, function( row, rowNumber ) { console.log( "Row " + rowNumber + " = " + JSON.stringify( row.values ) ); }); }); |
'Node.js' 카테고리의 다른 글
[Node.js] 디렉토리내의 파일 정보 가져오기 (0) | 2020.09.07 |
---|---|
[Node.js] HTTPS 서버 구현하기 (0) | 2020.05.20 |
[Node.js] socket 통신으로 파일 업로드 하기 (0) | 2020.05.14 |
[Noe.js] 실행시 값 입력하기 (0) | 2020.05.04 |
[Node.js] Email 발송하기 (0) | 2020.05.01 |
[Node.js] 파일 생성 시간 확인[Node.js] 파일 생성 시간 확인
Posted at 2020. 8. 18. 17:22 | Posted in 카테고리 없음// sort 참고
// https://ithub.tistory.com/67
// http://dudmy.net/javascript/2015/11/16/javascript-sort/
# 소스코드
const fs = require("fs"); // @see createfolder 폴더에 완성된 파일을 업로드한다. fs.readdir("./createfolder", function(error, filelist) { filelist.forEach(function(file) { fs.stat("./createfolder/" + file, function (err, stats) { // @see GMT 날짜 데이터 포맷 let createDate = new Date( stats.birthtimeMs ); let fileInfo = { fileDate:createDate.ymdhms(), fileName:file }; console.log(fileInfo); }); }); }); // @see YYYY-MM-DD HH:MM:SS 형식으로 날짜 변경 Date.prototype.ymdhms = function() { const year = this.getFullYear().toString(); const month = (this.getMonth() + 1).toString(); const date = this.getDate().toString(); const hour = this.getHours().toString(); const minute = this.getMinutes().toString(); const second = this.getSeconds().toString(); return year + "-" + (month[1] ? month : "0" + month[0]) + "-" + (date[1] ? date : "0" + date[0]) + " " + (hour[1] ? hour : "0" + hour[0]) + ":" + (minute[1] ? minute : "0" + minute[0]) + ":" + (second[1] ? second : "0" + second[0]); } |
# 출력결과
const fs = require("fs"); const xlsx = require("xlsx"); // @see YYYY-MM-DD HH:MM:SS 형식으로 날짜 변경 Date.prototype.ymdhms = function() { const year = this.getFullYear().toString(); const month = (this.getMonth() + 1).toString(); const date = this.getDate().toString(); const hour = this.getHours().toString(); const minute = this.getMinutes().toString(); const second = this.getSeconds().toString(); return year + "-" + (month[1] ? month : "0" + month[0]) + "-" + (date[1] ? date : "0" + date[0]) + " " + (hour[1] ? hour : "0" + hour[0]) + ":" + (minute[1] ? minute : "0" + minute[0]) + ":" + (second[1] ? second : "0" + second[0]); } // 디렉토리 내의 파일을 검색하고 마지막 파일을 리턴한다. function directoryFileListRead(callback) { fs.readdir("./createfolder", function(error, filelist) { let fileArr = new Array(); let breakPoint = 0; filelist.forEach(function(file, idx, arr) { // 데이터를 일겅온다. fs.stat("./createfolder/" + file, function (err, stats) { fileArr[idx] = new Array(); fileArr[idx] = { fileName:file, fileDate:stats.birthtimeMs }; // 반복문 실행회수를 더한다. breakPoint++; // 배열의 수와 반복문이 실행된 회수가 같은면 콜백한다. if(arr.length === breakPoint) { // fileArr.sort(function(a, b) { return a.fileDate < b.fileDate ? -1 : a.fileDate > b.fileDate ? 1 : 0; }); // 오름차순 정렬 fileArr.sort(function(a, b) { return a.fileDate > b.fileDate ? -1 : a.fileDate < b.fileDate ? 1 : 0; }); // 내림차순 정렬 // 마지막 데이터를 콜백 callback(fileArr[0]); } }); }); }); } directoryFileListRead(function( fileList ) { // 마지막 파일의 정보를 출력한다. console.log( fileList ); }); |