참고: https://developers.google.com/slides/api/guides/create-slide

 

예를들어 구글 설문조사 결과를 구글 시트로 만들고 그중 특정 선택된 셀 들을 골라서

구글 슬라이드로 자동으로 만들어서 프리젠테이션 할 때 이용할 수 있는 자동화 처리 예시입니다.

 

1. 먼저 구글 슬라이드에서 아래와 같이 슬라이드 틀을 만듭니다.

첫번째 슬라이드는 타이틀 표지로 하고 두번째 슬라이드에 {{텍스트}}를 추가합니다.

Slide -> Skip 을 눌러 숨김처리를 합니다. 또한 전환(Transition) 효과를 적용해 놓습니다.

두겹 {{괄호}}로 묶인 부분이 나중에 메일머지로 일괄 변경될 문구 들입니다.

여기서는 {{no}}, {{problem}}, {{name}} 을 변경할 예정입니다.

 

특히 이 프리젠테이션의 고유 ID 를 복사해 놓으세요.

제목표시줄에서 아래 부분입니다.

https://docs.google.com/presentation/d/xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx/edit

 

 

2. 구글 Form 의 설문조사 결과나 SpreadSheet 에서 아래와 같이 문서를 생성합니다.

여기서는 Answer4번에서 사용자가 몇몇 답변을 다중 선택했다고 가정합니다.

이 선택된 Answer4 답변들이 나중에 각 슬라이드에서 {{Problem}} 으로 대체 되고

ID와 name 의 일부분을 *로 가리고  {{name}} 으로 대체됩니다.

 

3. 구글 시트의 확장기능(Extensions)에서 Apps Script를 선택합니다.

 

 

4. myFunction 에 아래와 같은 코드를 넣습니다.

더보기
function myFunction() {
 
  // https://developers.google.com/slides/api/guides/create-slide
  // Replace <INSERT_SLIDE_DECK_ID> wih the ID of your 
  // Google Slides presentation.
  let masterDeckID = "스프레드시트의_고유_ID_입력";

  // Open the presentation and get the slides in it.
  let deck = SlidesApp.openById(masterDeckID);
  let slides = deck.getSlides();

  //remove old slides(3슬라이드 이후 기존에 만들어진 슬라이드 제거)
  if (slides.length >2) {
    for (k=slides.length-1; k>1;k--) slides[k].remove();
  }
  // The 2nd slide is the template that will be duplicated
  // once per row in the spreadsheet.
  let masterSlide = slides[1]; // 0부터 시작이라 1이 2번째 슬라이드

  // Load data from the spreadsheet.
  //let dataRange = SpreadsheetApp.getActive().getDataRange();
  let sht = SpreadsheetApp.getActive();
  let dataRanges = sht.getSelection().getActiveRangeList().getRanges();

  k=0
  //현재 선택한 셀들에 대해 순환
  dataRanges.forEach( function(dataRange) {
    //let dataRange = dataRanges[i].getDataRegion();
   
    // For every row, create a new slide by duplicating the master slide
    // and replace the template variables with data from that row.
    //Logger.log( dataRange.getA1Notation());
     
    for(j=1; j<=dataRange.getNumRows(); j++){
      let cell = dataRange.getCell(j,1)
      problem1 = cell.getValue();
      class1 = cell.offset(0,-5).getValue().toString().substring(0,2) + "**" ;
      name1 =  cell.offset(0,-4).getValue().toString().substring(0,1) + "**" ;
      
      // Insert a new slide by duplicating the master slide.
      let slide = masterSlide.duplicate();
      slide.move(deck.getSlides().length);  //move to the end
      slide.setSkipped(false);
    
      // Populate data in the slide that was created
      slide.replaceAllText("{{problem}}", problem1);
      slide.replaceAllText("{{no}}", ++k);
      slide.replaceAllText("{{name}}", class1 + ' ' + name1);

      // Create the URL for the slide using the deck's ID and the ID
      // of the slide.
      //let slideUrl = `https://docs.google.com/presentation/d/${deck.getId()}/edit#slide=id.${slide.getObjectId()}`;

    } 
  });

   // Remove the master slide if you no longer need it.
  //masterSlide.remove();

}

스프레드 시트에서 현재 선택된 셀들에 대해 순환하면서

슬라이드 틀을 복사해서 슬라이드를 추가하고

선택된 각 셀의 값과  그 셀의 특정 offset 위치의 값들을 가져와서 

각 슬라이드에 추가로 넣어주는 것입니다.

 

실행(Run)결과:

 

이렇게 온라인 상에서 즉시 슬라이드 쇼가 완성되어서 파워포인트, 엑셀 없이 

스프레드시트 연동 프리젠테이션이 가능합니다.

 

Apps Script 참고:

구글 시트의 각 행을 구글 슬라이드로 만들기

https://spreadsheet.dev/convert-each-row-google-sheets-into-slide-google-slides-apps-script

구글 슬라이드에 슬라이드 추가하기

https://spreadsheet.dev/create-copy-google-slides-presentation-apps-script

 

Google Apps Script 가 속도가 약간 느리긴 하지만

VBA처럼 여러가지 형태의 구글 문서를 오가면서 

자동화할 수 있다는 점에서 전망이 밝고 가능성 있는 분야로 생각됩니다.

특히 웹상에서 운영되기 때문에 언제 어디서나 어떤 플랫폼에 제한되지 않는 점도 장점입니다.