NGMsoftware

NGMsoftware
로그인 회원가입
  • 매뉴얼
  • 팁 앤 테크
  • 매뉴얼

    팁과 테크니컬 노하우를 확인하세요.

    팁 앤 테크

    팁과 테크니컬 노하우를 확인하세요.

    본 사이트의 컨텐츠는 저작권법의 보호를 받으므로 무단 복사, 게재, 배포 등을 금합니다.

    스크립트 엑셀에 입력되어 있는 아이디와 패스워드로 자동 입력하는 스크립트 만들기.

    페이지 정보

    본문

    안녕하세요. 엔지엠소프트웨어입니다. 엑셀에 아이디와 패스워드를 정리해놓고, 순차적으로 로그인해서 무언가 동작하는 스크립트를 만들고 싶은 분들이 많을겁니다. 이런식의 스크립트를 구성하는 방법은 여러가지가 존재합니다. 오늘은 가장 간단한 방법으로 아이디와 패스워드를 순차적으로 입력하면서 처리하는 방법에 대해 알아보도록 하겠습니다. 자~ 엔지엠 에디터를 실행하고, 새로운 스크립트를 추가하세요^^

    mpEtLKi.png

     

     

    로그인에 필요한 웹사이트는 [ 리액트로 로그인 만들기 ] 예제에서 사용하던 것을 가져왔습니다. 아래와 같이 구성되어 있습니다.

    7pliQJn.png

     

     

    예제로 사용된 로그인 웹사이트는 아직 데이타베이스를 연결한건 아니라서 실제로 로그인이 되거나 하지는 않습니다. 이제 엑셀에 데이타를 넣어놓을께요. 아래 그림처럼 4개의 계정이 있습니다. 첫번째 열(Column)은 아이디고, 두번째 열(Column)은 패스워드입니다.

    s6MMHhI.png

     

     

    엑셀은 바탕화면에 "계정 정보.xlsx"로 저장하세요.

    n0NRyLK.png

     

     

    이제 스크립트를 만들 준비는 다 되었습니다. 우선, 좌표가 틀어지면 안되기 때문에 로그인 테스트를 위한 웹사이트(크롬 브라우저)를 윈도우의 좌상단으로 고정시켜놓습니다. 창 위치를 이동시키는 액션은 도구 상자의 응용 프로그램 카테고리에 [ 이동 ] 액션을 사용하면 됩니다.

    modqbNR.gif

     

     

    로직을 생각 해볼까요? 엑셀에 저장되어 있는 행만큼 열을 반복해야 합니다. 다시말해서 아이디 입력하고 패스워드 입력 후 로그인 버튼을 눌러야 하죠. 이중 [ For 액션 ]을 사용하면 쉽게 처리할 수 있습니다. 다만, 행에서 열을 두번 반복해야 하기 때문에 로그인은 행에서 처리해야 합니다. 자~ 그러면 여기서 의문이 들수 있습니다. 행과 열을 반복해야 하는데 얼마만큼 반복할지 어떻게 알 수 있을까요? 셀 불러오기 액션을 사용하면 열과 행의 갯수를 알 수 있습니다.

    wNsHUaM.gif

     

     

    반복할 횟수를 알았으니~ [ For 액션 ]을 2개 추가 해줍니다. 그리고 두번째 For 액션은 아래 그림처럼 첫번째 For 액션 아래로 들어가게 해야 합니다. For 액션은 반복 횟수만큼 하위 액션들을 반복 시켜줍니다. For 액션의 핵심 속성은 3가지입니다. 조건, 증가값, 초기값인데요. 초기값을 0으로 설정하고 조건을 10으로 설정하면 0~9까지 반복합니다. 따라서 10번 반복하게 됩니다. 여기서 증가값을 2로 바꾸면 5번 반복하게 됩니다.

    eQpDach.png

     

     

    이제 어려운 개념인 [ 변수 추가 ]를 사용해야 합니다. 변수를 사용해야 다른 액션에서 알아낸 정보를 재사용할 수 있습니다. 엑셀에서 행과 열의 갯수를 알아냈으면, 위에 설명한 For 액션의 조건에 넣어줘야 합니다. 우선, 엑셀의 행은 4고, 열은 2입니다. 첫번째 For 액션은 행이므로 엑셀의 4 값을 가져와서 조건에 넣어줘야 합니다. 그래야~ 0~4까지 반복할 수 있기 때문입니다. 이렇게 하는 이유는 엑셀에 얼마만큼의 데이타가 있는지 모르기 때문입니다. 행의 갯수를 알더라도 스크립트를 매번 수정하지 않으려면 이 방식을 사용하는게 좋습니다. 그래야 진정한 자동화가 되니까요^^; 아래와 같이 변수 2개를 추가 해줍니다.

    pldNw81.gif

     

     

    아래 동영상처럼 엑셀 가져오기 액션의 정보를 열과 행 변수에 데이타를 저장 시킵니다.

    bxfd11k.gif

     

     

    이 스크립트를 디버그 모드로 실행해보면 열과 행 변수에 데이타가 정상적으로 저장되는지 확인할 수 있습니다. 여러분들도 아래 그림과 같이 행갯수와 열갯수 변수에 엑셀의 열과 행의 갯수가 저장되어 있을겁니다. 이 내용을 확인하려면 보기 메뉴의 도구 모음출력 정보디버그가 체크되어 있어야 합니다.

    RESBRPB.png

     

     

    열과 행의 갯수를 알아냈으니 For 반복을 설정해줍니다. 변수에 넣을 때는 추가하기고 변수의 값을 가져올 때는 가져오기를 눌러서 설정하면 됩니다^^;

    OQpPmyu.gif

     

     

    실행 해보면~ 행은 4번 반복하고, 열은 2번 반복합니다. 결과적으로 8번 반복하겠죠? 아래 동영상은 결과를 쉽게 확인하기 위해 지연을 1초 주었습니다.

    KXcvI0G.gif

     

     

    엑셀의 행과 열을 잘 반복하고 있습니다. 외부 API의 엑셀에서 [ ] 액션으로 아이디와 패스워드를 하나씩 가져오도록 구성해 볼께요. ①값을 가져올 엑셀 파일을 선택하고, ②열과 행을 선택해야 합니다.

    cj8PS2Z.png

     

     

    참고로, 엑셀은 인덱스가 1부터 시작합니다. 아무튼, 열과 행을 가져오려면 반복하면서 현재 위치가 어디인지 알아내야 합니다. 이 값은 For 반복 액션의 속성에 보면 반복 횟수가 있습니다. 이 값을 사용해야 하기 때문에 ①변수 2개를 추가하고, 행과 열의 인덱스로 설정 해줍니다. ②각각 변수 형식과 덮어 쓰기를 설정하고, ③아이디를 설정해주세요.

    gcnR4D7.png

     

     

    행과 열의 반복되는 횟수를 변수에 저장했습니다. 이 값을 사용하면~ 순차적으로 아이디와 패스워드를 가져올 수 있게됩니다.

    b6ayIIi.gif

     

     

    행의 반복 횟수는 0부터 3까지 반복합니다. 열은 0부터 1까지 반복하죠. 반복할 때 마다 이 값들을 변수로부터 가져오면 값 액션에서 선택한 엑셀 파일에 위치로 접근할 수 있습니다. 엑셀은 A1, B1, C1... 와 같이 열로 반복하고, 행은 1, 2, 3, 4... 와 같이 반복합니다. 열은 엔지엠 에디터가 자동으로 처리해주기 때문에 열 이름이 A1이라도 1로 처리가 됩니다.

    BRwyLV9.gif

     

     

    실행 해볼까요? 아래 동영상을 보면 에러가 발생하고 있는걸 알 수 있습니다. "예외가 발생한 HRESULT: 0x800A03EC" 이 에러는 엑셀에 잘못된 접근을 나타냅니다. 이 에러가 발생하는 이유는 인덱스에 문제가 있기 때문입니다. 위에서 말했듯이 엑셀은 인덱스가 1부터 시작합니다. 하지만, 우리의 반복 횟수는 0부터 시작하죠? 그래서, 엑셀의 셀을 선택할 때 A0, 0과 같이 선택되어 문제가 발생하는 것입니다.

    BHuegQI.gif

     

     

    이 문제를 해결 하려면 [ 숫자 증감 ]을 이용해서 열과 행의 값을 1씩 증가 시켜주면 됩니다. 엑셀의 값을 가져오기전에 숫자 증감을 행과 열에 하나씩 추가하고 1씩 증가 시켜줍니다. 정리해보면 처음 실행할 때 For 반복에서 0을 인덱스에 저장합니다. 그리고 값을 가져오기 전에 숫자 증감으로 1을 증가시킵니다. 열도 동일하게 동작하므로 값은 A1, 1(첫번째 행의 아이디)의 데이타를 가져옵니다. A1, 2(첫번째 행의 패스워드)를 가져온 후 다시 행을 읽고 인덱스에 1을 저장합니다. 그리고, 값을 가져오기 전에 숫자가 증가하므로 두번째 반복시에는 A2, 1과 A2, 2가 됩니다. 이해 되시죠^^?

    RZOQNvw.gif

     

     

    여기까지 스크립트를 작성하고, 실행 해보면 엑셀에 있는 데이타를 순차적으로 가져온걸 알 수 있습니다.

    fpzmrsI.gif

     

     

    키보드로 값을 입력하려면 엑셀에서 가져온 값도 키보드로 전달해야합니다. 그래서~ 변수가 하나 더 필요합니다.

    wNmygYM.png

     

     

    값 액션을 선택하고, ②변수의 추가하기를 클릭하세요. VariableItem(변수 항목) 컬렉션 편집기가 표시되면, ③추가 버튼을 클릭하세요. 저장할 ④변수 이름과 선택한 변수에 저장할 데이터를 선택한 후 ⑤확인을 눌러서 작업을 마무리 하세요.

    V4eQjKB.png

     

     

    엑셀에서 가져온 값을 저장하려면 아이디 입력 콘트롤이 선택되어 있어야 합니다. 웹에서는 사용자와 상호 작용하는 컨트롤을 인풋 박스(Input box)라고 부릅니다. 일반적으로 아이디와 패스워드 또는 회원 가입과 같은 곳에서 전화번호와 주소등등은 텍스트 박스라고 부릅니다. 서버에 데이타를 전송할 때 form에 추가되는 인풋 박스의 타입이 텍스트입니다. 인풋 박스라고 하면 텍스트를 입력하거나 핸드폰 앞 3자리와 같이 정해진 양식을 선택하는 컨트롤(콤보박스 또는 드롭다운리스트)이라고 생각하시면 됩니다. 여기까지 중요한 내용은 아니고, 용어 선택에 있어서 햇갈릴 수 있는 부분이기에 잠시 설명하고 넘어가는 부분입니다^^; 자~ 이제 아이디를 입력할 수 있는 인풋 박스를 선택했으니 엑셀 값을 입력해야 합니다.

    424fpJl.gif

     

     

    키보드 입력 2개와 [ 텍스트 쓰기 ]를 추가 했습니다. 대부분의 상황에서 크롬이나 엣지를 사용하다보면 아이디와 패스워드를 입력하려고 클릭하면 자동 완성 기능이 실행 될겁니다. 만약, 자동 완성 기능으로 채워지는 아이디와 패스워드가 있다면 전체 선택(Ctrl+A) 후 삭제(Delete)를 먼저 처리해야 합니다. 그래야 엑셀에서 읽어온 값을 정확하게 입력할 수 있기 때문입니다. 타이핑 하는 과정에서 자동 완성 콘텍스트가 표시될수도 있으니, 키보드 입력을 텍스트 쓰기 아래에 하나 더 추가 해줍시다. 아이디를 마지막까지 입력해도 콘텍스트가 사라지지 않는 경우 ESC를 눌러서 닫기 위함입니다.

    전체 선택 (Ctrl+A)

    WQqTwJ7.png

     

     

    삭제 (Del 키)

    nlNIPNs.png

     

     

    취소 또는 닫기 (ESC 키)

    syJRVm1.png

     

     

    변수에 저장되어 있는 엑셀 값을 아이디 인풋 박스에 입력하는 방법입니다. ①텍스트 쓰기 액션을 선택하고, 변수에서 ②가져오기를 선택하세요. 변수 항목 컬렉션 편집기에서 ③추가 버튼을 클릭하세요. ④변수 이름과 데이터를 선택하고, ⑤확인을 눌러서 작업을 완료합니다.

    ecMrSsl.png

     

     

    실행하면~ 아이디 인풋 박스에 엑셀의 아이디와 패스워드가 순차적으로 계속 입력되는걸 볼 수 있습니다. 처음은 아이디에 입력하고, 두번째는 패스워드 인풋 박스에 입력해야 합니다. 이렇게 동작하려면 홀짝(Odd, Even: 오드 아이를 말할 때 Odd입니다.)을 확인할 수 있어야 합니다. 홀짝을 확인하는 가장 쉬운 방법은 나머지를 이용하는 겁니다. 1 나누기 2는 나눌수가 없으므로 몫은 0이고 나머지는 1이 됩니다. 그러므로 홀수가 됩니다. 2 나누기 2는 몫이 0이고 나머지도 0입니다. 그래서 짝수가 됩니다. 이걸 이용하면 홀수와 짝수를 구분할 수 있으며 로직을 분리할 수 있습니다.

    lzqewV1.gif

     

     

    홀짝을 판단하기 위한 나머지를 저장할 변수를 하나 추가 해줍니다.

    C5vD4Eq.png

     

     

    "홀짝나머지" 변수에 값을 넣기 위한 [ 스마트 사칙 연산 ]을 열 반복기의 숫자 증감 아래에 추가하세요. 변수 A에 열 인덱스를 가져온 후 수식을 "{A}%2"와 같이 입력해줍니다. 그리고, 연산된 결과 값을 변수 "홀짝나머지"에 저장 해줍니다. "{A}"는 변수로부터 가져온 값을 치환합니다. 그리고 % 기호는 나머지를 구하는 연산자(Operator)입니다. 열 인덱스가 1 또는 2가 들어옵니다. 2로 나머지를 구하기 때문에 홀짝 여부를 알 수 있게됩니다.

    njZaY91.gif

     

     

    로직을 분기하기 위해 "홀짝나머지"에 저장된 값이 1과 같은지 비교하면 분기 처리할 수 있습니다. 1이면 아이디고 0이면 패스워드입니다. 값 아래에 [ 숫자 체크 ] 액션을 추가하고, 변수를 설정 해줍니다. 이 값이 0인지 비교하면 아이디와 비밀번호를 번갈아가며 입력할 수 있게됩니다.

    nJHEr9O.png

     

     

    비교할 숫자에 1을 넣어주세요. 자~ 변수로부터 가져온 값이 비교 대상 숫자에 들어오고 비교할 숫자 1과 같은지 체크합니다.

    gcMIJU0.png

     

     

    아이디를 입력하기 위한 구역입니다. 위 숫자 체크에서 홀수면 이 구역을 실행하고, 짝수면 ②아래 구역을 실행합니다.

    RO9Dtln.png

     

     

    에디터로 작성한 스크립트는 위에서 아래로 순차적으로 실행됩니다. 순차적으로 동작하는 로직을 다른곳으로 이동하려면 조건의 "같음"과 "다름" 속성을 이용합니다. 프로그래밍 언어에서는 ture(참), false(거짓)입니다. 또한, 같음과 다음을 설정하지 않으면 바로 아래 액션이 실행됩니다. 점프할 수 있는 곳이 없기 때문입니다. 여기까지 아이디와 비밀번호를 번갈아 가면서 입력하는 방법을 알아봤습니다. 아이디와 비밀번호를 입력했으면 로그인 버튼을 클릭 해야겠죠? 로그인은 행마다 반복하면 되므로 아래 그림처럼 첫번째 For 반복에 추가해야 합니다.

    P8eOArd.png

     

     

    로그인 버튼을 누르면 환영 메시지가 표시되도록 코딩되어 있습니다. 이 창을 닫는 클릭도 추가하고, 이걸 로그아웃이라고 생각해주세요^^; 실행 동영상을 먼저 보시죠~

    JRHgdcV.gif

     

     

    전체 내용을 보면 엑셀에 설정한 아이디와 패스워드 목록을 순차적으로 읽어서 로그인창에 입력 해줍니다. 그리고, 로그인 버튼을 클릭하죠~ 로그아웃 버튼을 클릭하기 전에 홈페이지에서 하고 싶은 자동화를 추가하면 됩니다. 뭔가 처리해야 할 로직을 스크립트로 별도로 만들어서 서브 스크립트로 추가하면 좀 더 효율적으로 관리할 수 있습니다. 아래 그림처럼 구성하는게 가장 이상적이죠^^

    xuSDS0B.png

     

     

    이렇게해서 엑셀에 입력된 계정 정보로 자동으로 로그인해서 무언가 처리하는 스크립트를 만들어봤습니다. 가능하면 직접 만들어보는게 좋습니다. 당장 왜 이렇게 해야 하는지 이해할 수 없을지라도요. 개발자도 다 똑같습니다. 아이큐가 평균만 된다면 누구나 다 할 수 있는 작업입니다. 하나씩 액션을 바꿔가면서 동작을 확인해보세요. 여러번 반복하다보면 감을 잡을 수 있을겁니다. 익숙해지면 아무것도 아닌 단순 작업의 반복이 됩니다. 실력이 느는 가장 빠른 지름길은 많이 만들어보는 겁니다^^; 스크립트는 첨부해 두었으니 참고해서 한번 만들어 보세요~

     

    개발자에게 후원하기

    MGtdv7r.png

     

    추천, 구독, 홍보 꼭~ 부탁드립니다.

    여러분의 후원이 빠른 귀농을 가능하게 해줍니다~ 답답한 도시를 벗어나 귀농하고 싶은 개발자~

    감사합니다~

    • 네이버 공유하기
    • 페이스북 공유하기
    • 트위터 공유하기
    • 카카오스토리 공유하기
    추천0 비추천0

    첨부파일

    댓글목록

    등록된 댓글이 없습니다.