본문 바로가기
이미지 매크로

C# .NET 매크로 프로그램 만들기. (구글 스프레드 시트에 데이터를 입력하거나 가져오는 방법)

by 업무자동화 2024. 6. 25.
반응형

유료 매크로 프로그램 다운로드

http://ngmsoftware.com/bbs/board.php?bo_table=product_review 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

#매크로 #메크로 #매크로프로그램 #엔지엠소프트웨어 #엔지엠에디터 #엔지엠플레이어 #비활성매크로 #하드웨어매크로 #기계식매크로 #마우스광클릭 #키보드매크로 #이미지서치 #이미지매치 #블로그 #카페 #인스타그램 #유튜브 #소셜네트워크 #카카오톡 #텔레그램 #자동화

 

 

  • 엔지엠 커뮤니티 월 이용료: 4,500원, 1년 이용료: 55,000원 (전체 기능의 80프로)
  • 엔지엠 얼티밋 월 이용료: 6,500원, 1년 이용료: 77,000원 (전체 기능의 90프로)
  • 엔지엠 엔터프라이즈 월 이용료: 9,200원, 1년 이용료: 110,000원 (전체 기능 사용)

 

안녕하세요. 엔지엠소프트웨어입니다. 대부분의 사람들은 엑셀을 이용해서 데이터를 처리하고 계실텐데요. 엑셀을 대체할 수 있는 구글의 스프레드 시트를 사용하시는 분들도 점점 더 늘어나고 있습니다. 아무래도 무료로 이용할 수 있고, 다양한 기능들을 제공하고 있어서 엑셀보다 유리한 측면도 분명 존재하기 때문입니다. 테이블 형태의 데이터를 관리할 때 구글 스프레드 시트를 이용해보면, 엑셀에 비해 크게 부족하지 않은 성능을 보여줍니다.

 

엔지엠 매크로에는 엑셀 처리에 대한 액션들도 존재하지만, 구글 스프레드 시트를 제어할 수 있는 기능도 존재합니다. 엑셀과 다르게 더 편리하게 이용할 수 있기도 한데요. 무엇보다 좋은점은 메모리에서 자유롭고 API가 잘 정리되어 있어서 퍼포먼스면에서 많이 유리합니다. 일단, 스프레드 시트 액션을 하나 추가하고 기능을 하나씩 개발 해볼께요.

 

 

스프레드 시트의 정보를 가져오는 속성들입니다.

[LocalizedCategory("Data")]
[LocalizedDisplayName("Result")]
[LocalizedDescription("Result")]
[Browsable(true)]
[DefaultValue(null)]
public string? Result { get; set; }

[LocalizedCategory("Data")]
[LocalizedDisplayName("ResultArray")]
[LocalizedDescription("ResultArray")]
[Browsable(true)]
[DefaultValue(null)]
public List<string>? ResultArray { get; set; }

[LocalizedCategory("Data")]
[LocalizedDisplayName("RowCount")]
[LocalizedDescription("RowCount")]
[Browsable(true)]
[DefaultValue(0)]
public int RowCount { get; set; }

[LocalizedCategory("Data")]
[LocalizedDisplayName("ColumnCount")]
[LocalizedDescription("ColumnCount")]
[Browsable(true)]
[DefaultValue(0)]
public int ColumnCount { get; set; }

 

동작은 아래와 같이 설정해야 합니다. 수식으로 데이터를 처리할지 여부도 함께 제공 해줍니다.

[LocalizedCategory("Action")]
[LocalizedDisplayName("InputValue")]
[LocalizedDescription("InputValue")]
[Browsable(true)]
[DefaultValue(null)]
[EditorAttribute(typeof(MultilineStringEditor), typeof(UITypeEditor))]
public string? InputValue { get; set; }

[LocalizedCategory("Action")]
[LocalizedDisplayName("UseExpression")]
[LocalizedDescription("UseExpression")]
[Browsable(true)]
[DefaultValue(false)]
public bool UseExpression { get; set; }

 

아래 2개의 속성이 중요한 내용인데요. 필수로 입력해야 합니다. 구글 스프레드 시트의 문서 링크 주소와 여러개의 시트중에서 액션을 수행할 시트 이름을 설정해야 합니다.

[LocalizedCategory("Action")]
[LocalizedDisplayName("SheetURL")]
[LocalizedDescription("SheetURL")]
[Browsable(true)]
[DefaultValue(null)]
public string? SheetUrl { get; set; }

[LocalizedCategory("Action")]
[LocalizedDisplayName("SheetName")]
[LocalizedDescription("SheetName")]
[Browsable(true)]
[DefaultValue(null)]
public string? SheetName { get; set; }

 

아래는 구글 시트에서 데이터를 가져올 때 어떤 방식으로 처리할지를 결정하는 속성들입니다. 데이터를 하나만 가져올 때는 문제가 안되지만, 여러개의 데이터를 가져와서 원하는 가공 처리를 하려면 열과 행을 분리해서 처리할 수 있습니다. 커스텀 모듈을 하나 만들어서 데이터 테이블을 처리하면 더 편리하겠지만 커스텀 모듈을 만드는건 어느정도 개발 코딩 지식이 필요하므로 가급적이면 엔지엠 매크로의 배열 액션들을 사용해서 데이터를 추출하는게 좋습니다. 배열이 아니더라도 정규식을 사용하면 좀 더 쉽게 원하는 데이터를 추출할수도 있습니다.

[LocalizedCategory("DataSelect")]
[LocalizedDisplayName("CellLocation")]
[LocalizedDescription("CellLocation")]
[Browsable(true)]
[DefaultValue(null)]
public string? CellLocation { get; set; }

[LocalizedCategory("DataSelect")]
[LocalizedDisplayName("RowSeperator")]
[LocalizedDescription("RowSeperator")]
[Browsable(true)]
[DefaultValue("@")]
public string DataRowSeperator { get; set; } = "@";

[LocalizedCategory("DataSelect")]
[LocalizedDisplayName("ColumnSeperator")]
[LocalizedDescription("ColumnSeperator")]
[Browsable(true)]
[DefaultValue(",")]
public string DataColumnSeperator { get; set; } = ",";

 

일반적으로 개발 실무 환경에서 언포멧티드(Unformatted) 문자열이라면 파서(Parser)를 만들어서 파싱(Parsing) 룰을 만듭니다. 이 내용은 흔한 상황은 아닌데요. 제가 일하는 반도체 분야의 장비들은 각자 데이터 포멧이 다릅니다. 이런 데이터를 중앙 서버에 정형화된 형태로 가공해서 넣으면 장비 수율을 분석할 수 있습니다. 물론, 다 되는건 아니지만요. 아무튼 제조 분야의 RMS 시스템에서 필수로 사용되는 기술입니다.

 

아래는 구글 스프레드 시트의 데이터를 가져오거나 추가 및 삭제할 때 처리 내용입니다.

public override string? Execute(IPlayer player)
{
    var id = base.Execute(player);

    switch (Operation)
    {
        case Definition.DataOperation.Add:
        case Definition.DataOperation.Insert:
            Ai.Api.GoogleService.SpreadSheet.SpreadSheetAddValue(player, SheetUrl, SheetName, CellLocation, DataRowSeperator, DataColumnSeperator, InputValue, UseExpression);
            break;
        case Definition.DataOperation.Modify:
            Ai.Api.GoogleService.SpreadSheet.SpreadSheetModifyValue(player, SheetUrl, SheetName, CellLocation, DataRowSeperator, DataColumnSeperator, InputValue, UseExpression);
            break;
        case Definition.DataOperation.Select:
            var result = Ai.Api.GoogleService.SpreadSheet.SpreadSheetGetValue(player, SheetUrl, SheetName, CellLocation, DataRowSeperator, DataColumnSeperator);
            Result = result.ResultValue;
            ResultArray = result.ResultArray;
            RowCount = result.RowCount;
            ColumnCount = result.ColumnCount;
            break;
    }

    return id;
}

 

테스트에 사용할 데이터를 미리 만들어 두었습니다. 엔지엠소프트웨어의 홈페이지 접속 통계를 구글 스프레드 시트에 정리한 내용입니다.

 

 

이 데이터로 테스트를 해볼께요. 테스트 내용은 유튜브 동영상을 참고하시면 됩니다.

https://youtu.be/n_u46CYAaVo

 

 

 

여기까지 해서 매크로가 갖춰야 할 최소한의 기능들은 대부분 개발이 완료된거 같습니다. 이제는 디테일한 부분들을 처리하고, 배포를 위한 시스템을 설계해야 할거 같네요. 그리고, 홈페이지도 하나 더 만들어야 할거 같아요. 이외에도 그동안 하지 못했던 자동 결제나 인증 처리 부분들을 개선한 후 서비스를 오픈해야겠습니다. 이런것들이 모두 완료되는데까지 얼마의 시간과 노력이 들어갈지 모르겠지만, 틈틈히 관련 소식들을 전하도록 할께요!

 

[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]

[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]

 

원본 글 보기

http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech 

 

엔지엠소프트웨어

엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.

www.ngmsoftware.com

 

반응형

댓글