유료 매크로 프로그램 다운로드
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;
}
테스트에 사용할 데이터를 미리 만들어 두었습니다. 엔지엠소프트웨어의 홈페이지 접속 통계를 구글 스프레드 시트에 정리한 내용입니다.
이 데이터로 테스트를 해볼께요. 테스트 내용은 유튜브 동영상을 참고하시면 됩니다.
여기까지 해서 매크로가 갖춰야 할 최소한의 기능들은 대부분 개발이 완료된거 같습니다. 이제는 디테일한 부분들을 처리하고, 배포를 위한 시스템을 설계해야 할거 같네요. 그리고, 홈페이지도 하나 더 만들어야 할거 같아요. 이외에도 그동안 하지 못했던 자동 결제나 인증 처리 부분들을 개선한 후 서비스를 오픈해야겠습니다. 이런것들이 모두 완료되는데까지 얼마의 시간과 노력이 들어갈지 모르겠지만, 틈틈히 관련 소식들을 전하도록 할께요!
[ 각종 자동화 매크로 및 RPA 프로그램 제작 해드립니다. ]
[ 초보자도 쉽게 따라할 수 있는 기초 학습 강좌 보기 ]
원본 글 보기
http://ngmsoftware.com/bbs/board.php?bo_table=tip_and_tech
엔지엠소프트웨어
엔지엠 매크로는 복잡한 반복작업을 자동화할 수 있습니다. PC 게임, 모바일 게임을 최적으로 지원하며 모든 PC 프로그램 및 업무에 적용할 수 있습니다.
www.ngmsoftware.com
댓글