https://www.itworld.co.kr/news/218619
09시 44분
Simon Bisson | InfoWorld
엑셀은 마이크로소프트의 가장 인기 있는 개발자 툴이다. 엑셀에 내장된 함수형 프로그래밍 언어는 람다와 변수까지 지원한다. 업무 전반에서 대량의 데이터를 관리하고 탐색할 때 엑셀을 사용한다. 대형 은행에서 스프레드시트 기반의 예측 모델을 사용한다는 점을 고려하면 글로벌 경제의 상당 부분이 엑셀에 의존한다 해도 과언이 아니다.
ⓒ Microsoft
그러나 엑셀 애플리케이션에는 한 가지 큰 문제가 있다. 사용하기가 어렵고 다른 애플리케이션에 집어넣기도 어렵다는 점이다. 몇 개월에 걸쳐 만든 복잡한 시뮬레이션은 업무용 애플리케이션에 이상적일 수 있지만 이 시뮬레이션은 독립적인 애플리케이션이다. 즉, 다른 코드에서 활용할 수 있는 서비스로 설계되지 않았다. 스프레드시트는 예측이나 분석의 자동화와는 거리가 멀고 여전히 수동 워크플로우에 속한다.
마이크로소프트는 오피스 애플리케이션을 사용한 작업을 웹 기반 접근 방식으로 전환했는데, 이를 기점으로 엑셀을 사용한 작업 측면에서 새로운 기회가 열렸다. 즉, 자바스크립트 API를 사용해 맞춤형 엑셀 추가 기능을 업무용 시스템에 연결하거나 마이크로소프트 그래프 엔드포인트를 사용해 승인된 애플리케이션에서 엑셀 기능을 호출할 수 있다. 특히 후자가 흥미롭다. 기업용 원드라이브에 저장된 엑셀 스프레드시트를 헤드리스 애플리케이션(headless application)으로 실행할 수 있기 때문이다.
그래프 API를 사용하는 방법은 간단하다. 그래프 API는 모든 호출에 대한 공통된 구조가 있는 REST API 집합이다. 이를 통해 원드라이브에 액세스하는 URL을 신속하게 만들 수 있는데, 스프레드시트나 워크북을 사용한 작업에서는 그래프 API만으로 충분하다. 단, 개인용 원드라이브 계정은 사용할 수 없다. 애저 액티브 디렉터리에 의해 제어되는 셰어포인트 기반 비즈니스 계정이 필요하다.
빠르게 그래프 API를 활용하고 싶다면 무료 90일 개발자 테넌트를 쓰면 된다(횟수에 제한 없이 갱신 가능). 개발자 테넌트에는 마이크로소프트 그래프 애플리케이션 구축을 시작하는 데 필요한 모든 툴이 포함된다.
먼저 애저 액티브 디렉터리 API를 사용해 애플리케이션에 적절한 권한을 부여한다. 그래야 이 API가 마이크로소프트 그래프에 대한 REST 호출을 전달하는 액세스 토큰을 생성할 수 있다. 애플리케이션에서 엑셀을 어떻게 사용할지에 따라 애플리케이션에 읽기 전용 또는 읽기/쓰기 액세스 권한이 필요하다. 작업 관리자에 의해 업데이트되는 워크북에서 데이터를 추출하는 애플리케이션이라면 읽기 전용이 적절하고, 들어오는 데이터에 함수를 적용하고 외부 데이터 소스를 다루는 워크북에는 읽기/쓰기 액세스 권한이 적합하다.
엑셀 API를 다룰 때 또 한가지 생각할 점은 액세스하는 워크북을 사용하는 방법이다. 모든 쓰기가 다른 세션에서 액세스가 가능한, 데이터베이스와 비슷한 영구 데이터 저장소인가? 아니면 세션이 종료될 때 모든 변경도 손실되는 비영구적 저장소인가? 2가지 접근 방법 모두 각자의 용도가 있다.
비영구 방식은 분석 애플리케이션, 함수 또는 엑셀의 차트 툴을 사용한 작업에 적합하다. 세션이 없는(sessionless) 옵션도 있다. 이 경우 코드는 워크북이 필요할 때마다 로드되기를 기다려야 한다. 느리고 비효율적일 수 있지만 호출이 상호 완전히 독립적이므로 호출 간에 데이터가 유출될 가능성이 없다는 장점이 있다.
마이크로소프트 그래프 탐색기(Graph Explorer)나 포스트맨(Postman)과 같은 툴은 이러한 API를 다룰 때 중요하다. 이 툴을 사용해 REST 호출을 작성, 테스트하고 API URL과 관련된 헤더와 본문을 검사할 수 있다. 먼저 이 툴을 사용해 원드라이브를 탐색해 엑셀 스프레드시트에 액세스할 수 있는지, 그리고 원하는 REST API를 통해 코드에 사용하기 위한 올바른 URL과 본문 구조를 갖고 있는지를 확인하는 것이 좋다.
스프레드시트 액세스는 파일 이름부터 시작해서 이후 액세스하려는 워크북 이름, 워크시트 이름 순이다. 모든 마이크로소프트 그래프 API가 그렇듯, 관련된 매개변수와 함께 원하는 작업을 추가하려면 먼저 워크시트에 대한 완전한 URL을 구성해야 한다.