26. JSON 데이터를 이용한 자동화

JSON 데이터를 사용하여 템플릿으로 처음 생성된 차트를 복제하고 새 데이터시트를 제공할 수 있습니다. 새 프레젠테이션을 구성하는 데 특정 템플릿이 사용되는 순서를 제어할 수 있습니다. 템플릿은 여러 번 사용할 수도 있습니다.

PowerPoint 템플릿과 JSON 데이터는 로컬 또는 원격으로 저장할 수 있습니다. JSON 데이터는 웹 서비스에 의해 즉시 생성할 수도 있습니다.

26.1
think-cell에 대한 JSON 데이터의 구조
26.2
JSON 데이터를 사용하여 프레젠테이션 만들기
26.3
JSON 데이터를 원격으로 제공
26.4
원격으로 템플릿 제공
26.5
원격으로 JSON 데이터 처리

26.1 think-cell에 대한 JSON 데이터의 구조

think-cell에 대한 JSON 데이터의 예는 아래에 나와 있으며 think-cell 설치 디렉토리의 하위 폴더 ppttc에 있는 파일 sample.ppttc에서 찾을 수 있습니다. JSON은 템플릿 연결에서 생성할 프레젠테이션을 지정합니다. ppttc/ppttc-schema.json의 스키마를 준수합니다.

think-cell 자동화를 위한 JSON 파일의 예.

루트 수준에는 다양한 항목이 있습니다. 각 항목은 해당 차트에 대한 템플릿 파일과 데이터를 지정합니다. 서로 다른 템플릿을 연결할 수 있으며 하나의 템플릿을 두 번 이상 사용할 수 있습니다. 가장 간단한 경우, 하나의 템플릿을 한 번 사용하여 해당 템플릿에 포함된 모든 차트를 데이터로 채웁니다.

연결된 템플릿에 있는 각 항목에는 image.  template image.  data 이렇게 두 가지 키가 있습니다. image.  template 값은 이름이 식별자로 설정된 think-cell 차트가 있는 PowerPoint 파일의 경로입니다(24. 자동화 소개 참조). 템플릿 파일은 JSON 데이터를 원격으로 제공에 설명된 대로 원격 위치에서도 검색할 수 있습니다.

image.  data 값은 템플릿에 포함된 차트에 대한 JSON 형식의 데이터 테이블 목록입니다. 목록의 각 항목에는 두 가지 속성이 있습니다. image.  name image.  table. image.  name은(는) 이름을 사용하는 차트를 지정하고 image.  table은(는) 데이터 테이블을 유지합니다.

또한 image.  table 값 구조는 시리즈를 나타내는 행과 카테고리를 나타내는 열이 있는 변환되지 않은 데이터시트에 해당합니다. 기본 차트의 경우 다음 행 순서가 표시됩니다.

  1. 먼저 빈 셀(null)이 있는 행을 선택한 다음 카테고리 이름이 있는 셀을 선택합니다.
  2. 100% 값의 행. 100% 값이 사용되지 않으면 빈 행이 다음처럼 지정됩니다. image.  [].
  3. 시리즈 이름이 있는 첫 번째 셀과 숫자 값을 포함하는 후속 셀이 있는 여러 행.

이름을 지정할 수 있는 모든 차트는 JSON에서 참조할 수 있습니다. 특정 데이터시트 레이아웃은 해당 장을 참조하거나 차트의 내부 데이터시트를 열어 참조할 수 있습니다.

참고: think-cell 데이터시트 범위 내에 있는 모든 셀은 모든 종류의 텍스트를 포함할 수 있습니다. 원하는 경우, 첫 번째 행에 있는 첫 번째 셀도 채울 수 있습니다.

table 키 값을 구성하는 데이터는 스키마에 설정된 특정 규칙을 준수해야 합니다. table 키 자체의 값은 배열입니다. 하위 배열은 데이터시트의 행을 나타냅니다. 빈 행 []은(는) 빈 배열을 사용하여 지정할 수 있습니다. 셀의 내용은 이러한 하위 배열에 나열된 엘리먼트를 통해 설명됩니다. 엘리먼트의 순서는 데이터시트 내의 열의 순서와 일치합니다. 빈 셀은 null 엘리먼트를 사용하여 명확하게 설명해야 합니다. 내용이 있는 셀은 다른 키 값 쌍을 사용하여 설명해야 합니다. 이 경우 키는 데이터 유형을 설명하고 값은 프레젠테이션에 표시할 실제 데이터입니다. 세 가지 데이터 유형이 지원됩니다.

image.  string은(는) 모든 종류의 텍스트에 사용할 수 있습니다. 인쇄 가능한 모든 유니코드(UTF-8) 문자가 지원됩니다. 예: {"string":"Echo"}

image.  number은(는) 모든 종류의 숫자에 사용할 수 있습니다. 사용된 소수 구분 기호는 점이어야 합니다. 예: {"number":"5"}

image.  date은(는) 날짜에 사용할 수 있습니다. 필요한 형식은 YYYY-MM-DD입니다. 예: {"date":"2016-09-04"}

셀 내용의 형식 지정(예: 날짜 형식 지정)은 PowerPoint 템플릿에서 수행해야 합니다.

명명된 텍스트 필드의 경우, table 엘리먼트는 하나의 '행'에 단 하나의 '셀'로 구성되므로 data 엘리먼트 내에서 명명된 각 텍스트 필드에 대해 한 번 나타나는 다음 조각과 같은 JSON 배열을 사용해야 합니다.

{ 
  "name": "Title", 
  "table": [[{"string":"A slide title"}]] 
},

26.2 JSON 데이터를 사용하여 프레젠테이션 만들기

JSON 데이터 파일의 파일 형식은 .ppttc이어야 합니다. 이러한 파일을 열 때:

  1. think-cell은 파일을 읽고 구조적 무결성을 확인합니다.
  2. 새 프레젠테이션이 만들어집니다. JSON 파일의 최상위 레벨에 있는 각 항목에 대해 새 프레젠테이션에는 지정된 템플릿의 사본이 포함됩니다.
  3. 템플릿 사본에서 name 값으로 식별된 차트의 데이터시트는 table 값의 데이터로 대체됩니다. 모든 합계 총 레이블, 레이블 배치 및 차이 화살표 값 또는 기타 차트 장식은 업데이트됩니다.

그런 다음 새 프레젠테이션이 표시됩니다. 사용자는 내용을 추가로 편집하고 저장하거나 다른 방식으로 사용할 수 있습니다.

명령줄에 JSON 데이터에서 프레젠테이션을 만들 수도 있습니다.

ppttc input.ppttc -o output.pptx

실행 파일 ppttc.exe은(는) think-cell의 설치 폴더에 있습니다. ppttc.exe 호출은 자동화 워크플로우에 쉽게 통합될 수 있습니다.

26.3 JSON 데이터를 원격으로 제공

.ppttc 파일의 JSON 데이터는 또한 웹 서비스를 통해 원격으로 생성될 수 있으며 웹 브라우저에서 다운로드할 수 있도록 사용자에게 제공될 수 있습니다. 아래 및 think-cell 설치 디렉토리의 ppttc 하위 폴더에 있는 sample.html에서 제공된 샘플을 참조하십시오.

<!DOCTYPE html> 
<html> 
<body> 
 
<h1>ppttc test</h1> 
 
<button type="button" onclick="myFunction()"> 
Download .ppttc 
</button> 
 
<a id="downloader" style="display:none"/> 
 
<script> 
function myFunction() { 
  var obj = [ 
    { 
      template : "https://static.think-cell.com/ppttc/template.pptx", 
      data: [ 
        { 
          name: "Chart1", 
          table: [ 
            [null, {string:"Alpha"},{string:"Bravo"},{string:"Charlie"}], 
            [], 
            [{string:"Delta"},{number:1},{number:2},{number:3}], 
            [{string:"Echo"},{number:4},{number:5},{number:6}] 
          ] 
        }, 
        { 
          name: "Chart2", 
          table: [ 
            [null, {date:"2016-09-03"},{date:"2016-09-04"},{date:"2016-09-05"}], 
            [], 
            [{string:"Foxtrot"},{number:7},{number:8},{number:9}], 
            [{string:"Gulf"},{number:10},{number:11},{number:12}] 
          ] 
        } 
      ] 
    } 
  ]; 
  var elemDownloader = document.getElementById("downloader"); 
  elemDownloader.setAttribute("href","data:application/vnd.think-cell.ppttc+json;charset=utf-8," 
    + encodeURIComponent(JSON.stringify(obj))); 
  elemDownloader.setAttribute("download", "sample.ppttc"); 
  elemDownloader.click(); 
} 
</script> 
 
</body> 
</html>

이 예에서는 사용자가 다운로드를 요청할 때 JSON 데이터가 즉시 컴파일됩니다. 이 예에는 정적 데이터가 포함되어 있지만 사용자가 웹사이트에서 제공한 매개 변수를 사용하여 다른 데이터 소스에서 JSON을 동적으로 생성할 수도 있습니다.

.ppttc 파일을 다운로드할 때 사용자는 파일을 저장하거나 다른 다운로드와 마찬가지로 열기를 선택할 수 있습니다. 파일을 열면 JSON 데이터는 JSON 데이터를 사용하여 프레젠테이션 만들기에 설명된 대로 새 프레젠테이션을 만드는 데 사용됩니다.

26.4 원격으로 템플릿 제공

think-cell 차트가 있는 템플릿 파일도 원격 서버를 통해 제공될 수 있습니다. 이 경우 template 키의 값은 위의 원격 JSON 예제에서와 같이 로컬 경로가 아닌 URL입니다. URL은 프로토콜로 http을(를) 지정하고 보안 연결을 위해 https을(를) 지정하거나 .ppttc 파일이 열린 시스템에서 유효한 다른 프로토콜을 지정할 수 있습니다.

원격 템플릿을 참조하는 .ppttc 파일을 처리할 때 PowerPoint는 템플릿 파일을 검색합니다. 따라서 .ppttc 파일을 연 사용자는 원격 템플릿에 대한 적절한 액세스 권한이 필요합니다.

JSON 데이터가 웹 서비스를 통해 원격으로 생성되고 템플릿을 원격으로 저장하는 경우 사용자 시스템에서 표준 think-cell 설치만 있으면 think-cell 차트와 함께 동적으로 생성된 PowerPoint 프레젠테이션을 사용할 수 있습니다.

26.5 원격으로 JSON 데이터 처리

think-cell의 JSON 데이터 처리를 서버로 실행할 수 있습니다. 이 경우 JSON 데이터를 템플릿과 병합하여 PowerPoint 프레젠테이션을 생성하는 작업은 원격 서버에서 수행됩니다. 서버는 JSON 조각을 입력으로 수락하고 병합된 PowerPoint 프레젠테이션을 HTTP를 통해 출력으로 전달합니다.

think-cell 서버를 시작하려면 설치 폴더로 이동하여 tcserver.exe를 실행합니다. 다음 대화 상자가 열립니다.

think-cell 서버 설정 대화 상자.

서버를 시작하려면:

  1. URL 형식으로 UrlPrefix 필드에서 서버가 수신 대기해야 하는 IP 주소 및 포트를 지정합니다. URL의 첫 번째 부분은 암호화되지 않은 HTTP 또는 암호화된 HTTPS의 사용 여부를 결정합니다.
  2. 적용 버튼을 클릭합니다.
  3. 나타나는 UAC(사용자 계정 컨트롤) 대화 상자에서 시스템의 구성 변경을 확인합니다.

창 하단의 로그 필드에 서버가 시작되어 현재 URL에서 수신 대기 중이라는 확인 메시지가 표시됩니다. 또한 로그 필드에 모든 클라이언트 요청과 서버 응답이 표시됩니다.

로그 메시지가 있는 think-cell 서버 대화 상자.

서버를 중지하려면 제거 버튼을 클릭합니다. URL을 변경하려면 UrlPrefix 필드에 새 URL을 입력하고 적용을 클릭합니다.

서버는 JSON 데이터를 MIME 유형 application/vnd.think-cell.ppttc+json의 HTTP POST 요청으로 수락하고 PowerPoint 파일로 응답합니다.

서버 사용을 시작하려면 UrlPrefix 필드에서 URL을 복사하여 브라우저에서 엽니다. 샘플 페이지가 열립니다. 서버가 자체 문서화 중입니다. 샘플 페이지의 HTML 소스 코드에 사용 및 자세한 예가 표시됩니다. 예시에는 다음 엘리먼트가 포함되어 있습니다.

  • 클릭하면 XMLHttpRequest을(를) 사용하여 서버와 통신하는 방법을 호출하는 버튼의 HTML 마크업
  • 정적 JSON 조각 일반적으로 JSON 데이터를 동적으로 생성합니다.
  • JSON 데이터를 서버로 전송하는 JavaScript 함수 정적 JSON 데이터와 함께 HTTP POST 요청을 생성합니다. 서버 응답은 파일 다운로드로 브라우저에 표시됩니다.

HTTP POST 요청을 생성하고 서버의 응답을 PowerPoint 파일로 저장하는 다른 방법도 있습니다. 그 외 다른 목적으로도 JavaScript를 사용할 수 있습니다.

공유