엔터프라이즈 커넥터(Enterprise Connectors)는 약 130여종의 기업용 데이터에 표준 SQL을 통해 접근 및 연동할 수 있는 솔루션 입니다. 

 

이 글에서는 구글 드라이브의 스프래드 시트인 구글 시트(Google Sheets)와 양방향 엑세스하는 기능을 직접 구현해보겠습니다. 

 

구글 시트는? 

  • 구글 드라이브에서 제공하는 웹 기반 스프래드 시트 프로그램입니다. 
  • 엑셀과 같은 스프래드 시트를 온라인에서 사용할 수 있습니다. 
  • 문서를 그룹 또는 사용자와 공유하고, 권한 설정 가능합니다. 

 

이 글에서는 다음 내용을 설명합니다.

  • 엔터프라이즈 커넥터 설치
  • 구글 API 콘솔 설정
  • 엔터프라이즈 커넥터 문서 확인
  • 구글 시트 연동
    • TFDConnection으로 구글 시트 연결
    • TFDQuery로 정보 조회, 입력, 수정, 삭제
    • TFDStoredProc으로 새로운 시트 추가(추가 제공) 기능 사용
  • 배포

엔터프라이즈 커넥터 설치

다음 링크를 참고해 엔터프라이즈 커넥터 중 "Google Sheets"를 설치합니다.

 

구글 API 콘솔 설정

구글 드라이브의 구글 시트에 연동을 위해서는 구글 API 콘솔에서 앱 및 인증정보를 등록과 API 활성화해야 합니다.

 

구글 API 콘솔 접속 및 프로젝트 선택

다음 링크를 통해 구글 API 콘솔 화면에 접속합니다.(구글 계정이 필요합니다.)

프로젝트를 선택하거나 새 프로젝트를 생성합니다.

 

사용자 인증 정보 만들기

OAuth 클라이언트 ID 생성 후 클라이언트 ID와 클라이언트 시크릿을 생성합니다.

이 두개의 값은 향후 구글 시트와 연결 시 사용합니다.

 

API 및 서비스 > 사용자 인증 정보 화면으로 이동합니다.

 

사용자 인증 정보 만들기 > OAuth 클라이언트 ID 항목을 선택합니다.

 

 

애플리케이션 유형 > 기타 선택 후 구분가능한 이름을  입력 후 [생성] 버튼을 클릭합니다.

 

 

OAuth 2.0 클라이언트 ID 생성 후 클라이언트 ID와 클라이언트 보안 비밀 항목을 확인합니다.

(이 2개 값은 연동 시 활용됩니다.)

 

구글 드라이브 & 구글 시트 API 활성화

구글 드라이브와 구글 시트를 사용하도록 API 활성화를 진행합니다.

 

API 및 서비스 > 라이브러리 메뉴 선택 후 검색란에 검색어 "Sheets" 를 입력하고 "Google Sheets API" 항목을 선택합니다.

[사용 설정] 버튼을 눌러 사용 설정합니다.

 

"Google Drive API"도 위와 동일한 방법으로 활성화 진행합니다.

 

엔터프라이즈 커넥터 문서

구글 시트와 같은 서비스 연동은 일반적으로 서비스에서 제공하는 API를 이용해 연동합니다.

하지만, FireDAC 엔터프라이즈 커넥터는 기존 DBMS 연동과 비슷하게 FireDAC 컴포넌트의 쿼리와 스토어드 프로시저 컴포넌트를 이용해 연동하는 방식을 제공합니다.

 

표준 SQL 문을 통해 원하는 데이터에 접근하고, 스토어드 프로시저로 원하는 기능을 호출합니다.

서비스 별 테이블과 필드에 대한 정보 그리고 기능(스토어드 프로시저)은 엔터프라이즈 커넥터 문서를 참고해야 합니다.

주로 살펴볼 내용은 다음과 같습니다.

 

SQL Compliance

엔터프라이즈 커넥터는 표준 SQL 문법을 통해 서비스의 데이터에 접근합니다.

 

SELECT 문법의 경우 SELECT FROM WHERE 절 뿐아니라, JOIN, UNION, GROUP BY, ORDER BY 등의 문법을 사용할 수 있습니다.

INSERT, UPDATE, DELETE 등의 문장을 통해 데이터 즉, 새로운 행을 추가, 수정, 삭제 할 수 있습니다.

 

 

다음과 같은 예제들을 참고할 수 있습니다.

 

Stored Procedures

새로운 시트 추가(CreateSpreadsheet), 시트 복사(CopySheet)와 같은 추가 기능은 Stored Procedure를 통해 제공합니다.

 

구글 시트 연동

연동은 VCL Form Application 프로젝트로 진행합니다.

구글 시트 연결 설정

폼에 TFDConnection 컴포넌트를 추가하고, Driver ID를 "CDataGoogleSheets"로 선택 후 연결 속성을 설정합니다.

  • InitiateOAuth : GETANDREFRESH(연결 토큰이 존재하지 않으면 브라우저를 통해 사용자에게 토큰을 얻음)
  • OAuthClientId : 구글 API 콘솔의 OAuth 2.0 클라이언트 ID의 클라이언트 ID 입력
  • OAuthClientSecret : 구글 API 콘솔의 OAuth 2.0 클라이언트 ID의 클라이언트 보안 비밀 입력
  • OAuthSettingsLocation : 인증결과 정보를 기록하는 파일 경로

 

 

구글은 OAuth 2.0을 이용 사용자 인증 및 서비스 접근 권한을 확인합니다.

OAuth 2.0 연동 과정은 엔터프라이즈 커넥터 내부적으로 진행합니다. 연결을 활성화하면 자체적으로 웹브라우저를 실행 후 인증 및 권한 확인 절차가 수행됩니다.

 

이때, 인증은 사용자의 계정으로 진행되며 이후 진행되는 구글 시트 등은 인증한 사용자의 문서와 연동됩니다.

즉, 개발 시 연동하는 문서는 개발자의 구글 시트 문서이며, 실제 사용 시에는 사용자의 문서와 연동 될것입니다.

 

FireDAC Connection Editor에서 [Test] 버튼을 누르거나, TFDConnection의 Connected 속성을 True로 설정해 연결합니다.

 

 

(옵션) 등록 후 구글측의 확인 절차가 필요합니다. 그 전까지 다음 화면과 같이 표시됩니다. 확인 전까지 "고급 > 앱으로 이동"을 선택 해 진행합니다.

 

 

구글 드라이브와 구글 시트 권한 요청 화면, 선택사항 확인 화면에서 권한을 허용합니다.

권한을 허용하면 성공 화면이 표시됩니다.

 

 

위 과정은 개발 시 구글 시트에 연결할때도 표시되지만, 최종 사용자가 구글 시트와 연결 시에도 동일한 절차로 진행됩니다.

정보 조회/입력/수정/삭제

다음과 같이 폼을 만들었습니다.(버튼 아래의 상자는 TListBox 입니다.)

 

테이블 목록과 필드 목록 조회

구글 시트에는 여러개의 문서를 문서별 여러개의 시트를 제공합니다. 엔터프라이즈 커넥터에서 테이블은 각 문서의 시트를 대상으로 합니다.

다음 코드를 통해 테이블(문서의 시트) 목록을 가져옵니다. 지정된 테이블의 필드 목록도 가져옵니다.

1
2
3
4
5
6
7
8
9
10
procedure TForm1.Button2Click(Sender: TObject);
begin
  FDConnection1.GetTableNames('CDATA', '', '', ListBox1.Items);
end;
 
procedure TForm1.Button3Click(Sender: TObject);
begin
  if ListBox1.ItemIndex > -1 then
    FDConnection1.GetFieldNames('CDATA', '', ListBox1.Items[ListBox1.ItemIndex], '', ListBox2.Items);
end;

결과는 다음과 같습니다.

 

 

참고> 위 테이블 리스트 등을 가져오는 작업은 문서와 문서의 시트가 많다면 시간이 오래걸릴 수 있습니다.

위 기능은 테이블 목록을 가져와 표시하는 기능으로 실제 구현 시에는 테이블(문서의 시트)를 직접 확인해 SQL 문을 만드는 등으로 활용하시기 바랍니다.

 

SQL 열기 및 수행

테이블과 필드 정보를 확인할 수 있습니다.

 

시트의 정보를 TFDQuery 컴포넌트를 이용 표준 SQL 문장을 이용해 조회 및 편집할 수 있습니다.

다음은 SELECT 문과, INSERT 문을 수행한 결과입니다.

 

새로운 시트 추가

새로운 시트 추가등의 추가 기능은 TFDStoredProc 컴포넌트를 이용할 수 있습니다.

다음은 서비스에 정의된 기능 목록입니다.

 

 

새로운 시트 추가는 CreateSpreadseet 스토어드 프로시저를 이용합니다. 코드는 다음과 같습니다.

1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm1.Button4Click(Sender: TObject);
var
  Title: string;
begin
  Title := InputBox('Create spread sheet', 'Spread sheet name', '');
  if Title <> '' then
  begin
    FDStoredProc1.ParamByName('Title').Value := Title;
    FDStoredProc1.ParamByName('Description').Value := 'Created with FDEC';
    FDStoredProc1.ExecProc;
  end;
end;

 

배포

개발이 완료되었다면, 라이선스를 포함해 배포 해야합니다.

 

라이선스 등록 없이 배포 시 다음 오류를 발생합니다.

 

 

라이선스 배포는 연결 속성의 RTK 항목을 통해 적용할 수 있습니다.

 

 

RTK 항목에 입력할 값은 설치 디렉토리에 포함된 deployment_licensing.txt 파일을 참고합니다.

(정식사용자의 경우 설치 시 해당 라이선스 파일이 생성됩니다.)

 

 

파일을 열면 설명과 함께 RTK 값이 포함되어 있습니다. 파일의 내용을 복사 해 연결 속성의 RTK 값 설정 후 다시 빌드해 배포할 수 있습니다.

 

 

 

번호 제목 글쓴이 날짜 조회 수
공지 [DelphiCon 요약] 코드사이트 로깅 실전 활용 기법 (Real-world CodeSite Logging Techniques) 관리자 2021.01.19 15443
공지 [UX Summit 요약] 오른쪽 클릭은 옳다 (Right Click is Right) 관리자 2020.11.16 13962
공지 [10.4 시드니] What's NEW! 신기능 자세히 보기 관리자 2020.05.27 16499
공지 RAD스튜디오(델파이,C++빌더) - 고객 사례 목록 관리자 2018.10.23 22055
공지 [데브기어 컨설팅] 모바일 앱 & 업그레이드 마이그레이션 [1] 관리자 2017.02.06 23268
공지 [전체 목록] 이 달의 기술자료 & 기술레터 관리자 2017.02.06 18923
공지 RAD스튜디오(델파이, C++빌더) - 시작하기 [1] 관리자 2015.06.30 39259
공지 RAD스튜디오(델파이,C++빌더) - 모바일 앱 개발 사례 (2020년 11월 업데이트 됨) 험프리 2014.01.16 174725
1043 David I의 31일 동영상(한글자막) - 파이어몽키 Anchors프로퍼티와 Layout 컴포넌트 활용하기 관리자 2013.03.12 4105
1042 [따라하기] "나의 도서관 앱" 개발 Humphery 2014.10.15 4100
1041 윈도우 VCL 앱을 iOS로 전환하기 관리자 2013.06.29 4099
1040 안드로이드 SDK 수동 설치 방법 file 김원경 2020.07.15 4093
1039 [XE7] 사물인터넷(IoT)와 RAD Studio -블루투스 [2] Humphery 2014.09.24 4090
1038 모바일 첫걸음: 델파이 iOS 개발 - 2. 컴포넌트와 스타일 적용 관리자 2013.09.13 4087
1037 [하이브리드 앱 개발] 웹페이지에서 델파이 함수 호출하기 Humphery 2015.06.26 4074
1036 TListView iOS 샘플 제공 관리자 2013.06.28 4024
1035 델파이 iOS 개발 따라잡기: 1-2. 기본 컴포넌트 사용하기 관리자 2013.07.31 4016
1034 RAD Studio XE4 따라잡기 워크샵 (부산/대전) 발표자료입니다. file 관리자 2013.05.30 3992
1033 [웹세미나] 멋진 모바일 UI 디자인을 위한 7가지 팁 관리자 2013.07.06 3985
1032 reFind.exe: 마이그레이션 작업에서 수작업을 줄여주는 도구 Humphery 2015.04.09 3976
1031 [10.3 리오][업데이트 3] What's NEW! 신기능 자세히 보기 file 관리자 2019.11.22 3973
1030 맥 OS X 애플리케이션에서 씨리얼포트 연결하기 관리자 2013.08.12 3961
1029 David I의 31일 동영상(한글자막) - Action 및 Gesture를 추가한 파이어몽키 애플리케이션 관리자 2013.03.12 3959
1028 이 달의 기술자료 - 2015년 01월 험프리 2014.12.31 3954
1027 [XE8] 근거리 위치기반 서비스를 개발할 수 있는 비콘(Beacon) 연동하기 [1] Humphery 2015.04.15 3941
1026 CEF4Delphi(크로미움 기반 웹브라우저) 컴포넌트 설치 및 실행하기 험프리 2019.01.14 3918
1025 델파이 iOS 개발 따라잡기: 2. 3D 애니메이션 관리자 2013.08.27 3915
1024 iOS 에서 C++ 지원 XE5 Update 2 가 공개되었습니다. minders 2013.12.13 3898