[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] googleapis 사용한 Googel Spread Sheet 연동[Node.js] googleapis 사용한 Googel Spread Sheet 연동

Posted at 2020. 8. 26. 14:41 | Posted in Node.js/Google Spread Sheet
반응형




API : 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 {

        gsrunclient );

    }

});


async function gsrun( client ) {


    const sheetsgoogle.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 {

        gsrunclient );

    }

});


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 {

        gsrunclient );

    }

});


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 {

        gsrunclient );

    }

});


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 {

        gsrunclient );

    }

});


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] exceljs를 이용하여 Excel 파일 읽기[Node.js] exceljs를 이용하여 Excel 파일 읽기

Posted at 2020. 8. 20. 10:35 | Posted in Node.js
반응형




npmjs : 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 ) );

    });

}); 








반응형
//

퍼펫티어 request, response ( 작성중 )퍼펫티어 request, response ( 작성중 )

Posted at 2020. 5. 29. 22:38 | Posted in Node.js/Puppeteer
반응형






    await page.on("response", async(response) => {
        console.log(await response.url());
        console.log(await response.json());
    });




    await  page.on("request", request => {
        console.log("123");
        request.continue({
              url:"사이트 URL"
            , method:"GET"
            , postData: JSON.stringify({ test:"test" })
            , headers: { "Content-Type":"application/json" },
        });
    }); 





반응형
//