프레젠테이션 내에서 항목 선택

selection은 현재 열려 있는 프레젠테이션 페이지에서 선택된 항목입니다. 가중치를 할당합니다. 이 가이드에서는 Apps Script를 사용하여 활성 프레젠테이션에서 선택항목을 설정할 수 있습니다.

선택 항목은 스크립트가 시작되었을 때의 스냅샷입니다. 사용자가 스크립트가 실행되는 동안 클릭과 선택이 변경되면 반영되지 않습니다.

선택 항목 및 선택 유형

선택한 항목을 읽으려면 선택 클래스에 대해 자세히 알아보세요. 클래스에는 선택한 객체의 유형입니다.

SelectionType enum 선택된 객체의 특정 유형을 나타냅니다. 예를 들어 사용자가 도형에서 텍스트를 선택하면 선택 유형이 TEXT여야 합니다. 이 경우 selection.getTextRange() 메서드를 사용하여 지도 가장자리에 패딩을 추가할 수 있습니다.

또한 선택사항이 포함된 객체를 검색할 수도 있습니다. 계속해서 위의 예에서는 selection.getPageElementRange().getPageElements()[0] 마찬가지로 - 현재 활성 페이지인 주변 셰이프를 포함합니다. ~ 해당 페이지를 가져오려면 selection.getCurrentPage()를 사용하세요.

선택 항목 읽기

선택한 항목을 읽으려면 Presentation.getSelection() 메서드를 사용할 수 있습니다.

slides/selection/selection.gs
const selection = SlidesApp.getActivePresentation().getSelection();

현재 페이지 읽기

현재 Page 동영상 광고의 경우 getSelection()getCurrentPage() 메서드를 다음과 같이 바꿉니다.

slides/selection/selection.gs
const currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

현재 페이지는 다음 유형 중 하나일 수 있습니다.

현재 페이지에서는 하나 이상의 객체를 선택할 수 있으며 SelectionType은 선택 유형을 결정합니다.

선택 유형에 따른 선택 항목 읽기

다음 예는 선택 유형을 사용하여 표시할 수 있습니다.

slides/selection/selection.gs
const selection = SlidesApp.getActivePresentation().getSelection();
const selectionType = selection.getSelectionType();
let currentPage;
switch (selectionType) {
  case SlidesApp.SelectionType.NONE:
    console.log('Nothing selected');
    break;
  case SlidesApp.SelectionType.CURRENT_PAGE:
    currentPage = selection.getCurrentPage();
    console.log('Selection is a page with ID: ' + currentPage.getObjectId());
    break;
  case SlidesApp.SelectionType.PAGE_ELEMENT:
    const pageElements = selection.getPageElementRange().getPageElements();
    console.log('There are ' + pageElements.length + ' page elements selected.');
    break;
  case SlidesApp.SelectionType.TEXT:
    const tableCellRange = selection.getTableCellRange();
    if (tableCellRange !== null) {
      const tableCell = tableCellRange.getTableCells()[0];
      console.log('Selected text is in a table at row ' +
        tableCell.getRowIndex() + ', column ' +
        tableCell.getColumnIndex());
    }
    const textRange = selection.getTextRange();
    if (textRange.getStartIndex() === textRange.getEndIndex()) {
      console.log('Text cursor position: ' + textRange.getStartIndex());
    } else {
      console.log('Selection is a text range from: ' + textRange.getStartIndex() + ' to: ' +
        textRange.getEndIndex() + ' is selected');
    }
    break;
  case SlidesApp.SelectionType.TABLE_CELL:
    const tableCells = selection.getTableCellRange().getTableCells();
    const table = tableCells[0].getParentTable();
    console.log('There are ' + tableCells.length + ' table cells selected.');
    break;
  case SlidesApp.SelectionType.PAGE:
    const pages = selection.getPageRange().getPages();
    console.log('There are ' + pages.length + ' pages selected.');
    break;
  default:
    break;
}

텍스트 선택 읽기

Selection.getTextRange() 메서드를 사용할 수 없습니다. 텍스트 선택에는 두 가지 유형이 있습니다.

  • 범위 선택: 도형에 'Hello'와 'He'라는 텍스트가 포함된 경우 은 선택했다면 반환된 범위는 startIndex=0, endIndex=2입니다.
  • 커서 선택: 도형에 'Hello'라는 텍스트가 포함되어 있고 커서가 'H' 뒤 ('H|ello')이면 반환되는 범위는 startIndex=1이고 endIndex=1입니다.

선택 항목 수정하기

스크립트가 사용자의 선택을 수정할 수 있습니다. 스크립트가 프레젠테이션에 대해 선택한 모든 변경 사항이 반영됩니다. 스크립트 실행 기간 동안 후속 선택 작업에서 이 값을 반환합니다.

선택 변경사항은 스크립트가 실행된 후에만 사용자의 브라우저에 반영됩니다. Presentation.saveAndClose()가 호출될 때 생성됩니다.

현재 페이지 선택

활성 프레젠테이션의 페이지는 selectAsCurrentPage() 메서드에 대한 메서드를 제공합니다. 이 방법을 사용하면 이전 페이지 요소, 페이지 또는 선택한 텍스트가 삭제됩니다. 따라서 이 메서드를 사용하면 현재 페이지에서 현재 선택사항을 모두 있습니다. 예를 들면 다음과 같습니다.

slides/selection/selection.gs
// Select the first slide as the current page selection and remove any previous selection.
  const selection = SlidesApp.getActivePresentation().getSelection();
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  slide.selectAsCurrentPage();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.CURRENT_PAGE
// selection.getCurrentPage() = slide
//

페이지 요소 선택

페이지에서 페이지 요소를 선택하려면 PageElement.select() 메서드를 사용합니다. 이렇게 하면 이전에 선택한 페이지 요소도 선택 해제됩니다.

예를 들면 다음과 같습니다.

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const pageElement = slide.getPageElements()[0];
  // Only select this page element and remove any previous selection.
  pageElement.select();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.PAGE_ELEMENT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = pageElement
//

여러 페이지 요소 선택

선택 항목에 추가적인 페이지 요소를 추가하려면 PageElement.select(false) 메서드 사용). 모든 페이지 요소가 현재 페이지에 있어야 합니다.

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  // First select the slide page, as the current page selection.
  slide.selectAsCurrentPage();
  // Then select all the page elements in the selected slide page.
  const pageElements = slide.getPageElements();
  for (let i = 0; i < pageElements.length; i++) {
    pageElements[i].select(false);
  }
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.PAGE_ELEMENT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements() = pageElements
//

선택 항목 변환

스크립트가 수행하는 수정사항은 현재 선택 항목을 변환할 수 있으므로 선택된 변경사항이 표시됩니다. 예를 들면 다음과 같습니다.

  1. 두 개의 도형 A와 B를 선택했다고 가정해 보겠습니다.
  2. 다음으로 스크립트가 도형 A를 제거합니다.
  3. 결과적으로 선택 항목이 edit에 대해 변환되어 도형 B가 선택되어 있는지 확인합니다.

다음 예는 인코더-디코더 표현을 조작하여 선택 영역을 선택할 수 있습니다.

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const shape1 = slide.getPageElements()[0].asShape();
  const shape2 = slide.getPageElements()[1].asShape();
  // Select both the shapes.
  shape1.select();
  shape2.select(false);
  // State of selection
  //
  // selection.getSelectionType() = SlidesApp.SelectionType.PAGE_ELEMENT
  // selection.getCurrentPage() = slide
  // selection.getPageElementRange().getPageElements() = [shape1, shape2]
  //
  // Remove one shape.
  shape2.remove();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.PAGE_ELEMENT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements() = [shape1]
//

텍스트 선택

도형이나 표 셀에 포함된 텍스트는 TextRange.select() 메서드를 사용하여 텍스트 범위를 지정합니다. 텍스트가 도형에 포함되어 있으면 해당 도형도 선택됩니다. 텍스트가 표 셀 안에 포함되어 있으면 해당 표 셀과 그 바깥쪽 셀은 표가 모두 선택되어 있습니다.

이렇게 하면 상위 페이지가 현재 페이지로 설정되기도 합니다.

도형에서 범위 선택

다음 예는 포함된 텍스트 내에서 범위를 선택하는 방법을 보여줍니다. 볼 수 있습니다

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const shape = slide.getPageElements()[0].asShape();
  shape.getText().setText('Hello');
  // Range selection: Select the text range 'He'.
  shape.getText().getRange(0, 2).select();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.TEXT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = shape
// selection.getTextRange().getStartIndex() = 0
// selection.getTextRange().getEndIndex() = 2
//

도형에서 커서 선택

다음 예는 포함된 텍스트 내에서 커서를 선택하는 방법을 보여줍니다. 볼 수 있습니다

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const shape = slide.getPageElements()[0].asShape();
  shape.getText().setText('Hello');
  // Cursor selection: Place the cursor after 'H' like 'H|ello'.
  shape.getText().getRange(1, 1).select();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.TEXT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = shape
// selection.getTextRange().getStartIndex() = 1
// selection.getTextRange().getEndIndex() = 1
//

표 셀에서 범위 선택

다음 예는 포함된 텍스트 내에서 범위를 선택하는 방법을 보여줍니다. 셀에 입력합니다.

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const table = slide.getPageElements()[0].asTable();
  const tableCell = table.getCell(0, 1);
  tableCell.getText().setText('Hello');
  // Range selection: Select the text range 'He'.
  tableCell.getText().getRange(0, 2).select();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.TEXT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = table
// selection.getTableCellRange().getTableCells()[0] = tableCell
// selection.getTextRange().getStartIndex() = 0
// selection.getTextRange().getEndIndex() = 2
//

TableCell에서 커서 선택

다음 예는 포함된 텍스트 내에서 커서를 선택하는 방법을 보여줍니다. 셀에 입력합니다.

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const table = slide.getPageElements()[0].asTable();
  const tableCell = table.getCell(0, 1);
  tableCell.getText().setText('Hello');
  // Cursor selection: Place the cursor after 'H' like 'H|ello'.
  tableCell.getText().getRange(1, 1).select();
// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.TEXT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = table
// selection.getTableCellRange().getTableCells()[0] = tableCell
// selection.getTextRange().getStartIndex() = 1
// selection.getTextRange().getEndIndex() = 1
//

텍스트 수정을 통한 선택 변환

다음 예는 선택한 텍스트

slides/selection/selection.gs
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  const shape = slide.getPageElements()[0].asShape();
  const textRange = shape.getText();
  textRange.setText('World');
  // Select all the text 'World'.
  textRange.select();
  // State of selection
  //
  // selection.getSelectionType() = SlidesApp.SelectionType.TEXT
  // selection.getCurrentPage() = slide
  // selection.getPageElementRange().getPageElements()[0] = shape
  // selection.getTextRange().getStartIndex() = 0
  // selection.getTextRange().getEndIndex() = 6
  //
  // Add some text to the shape, and the selection will be transformed.
  textRange.insertText(0, 'Hello ');

// State of selection
//
// selection.getSelectionType() = SlidesApp.SelectionType.TEXT
// selection.getCurrentPage() = slide
// selection.getPageElementRange().getPageElements()[0] = shape
// selection.getTextRange().getStartIndex() = 0
// selection.getTextRange().getEndIndex() = 12
//

선택 해제 중

텍스트 또는 페이지 요소를 선택 해제하는 명시적인 메서드는 없습니다. 그러나 결과는 Page.selectAsCurrentPage() 또는 pageElement.select() 메서드와 함께 사용할 수 있습니다.

현재 페이지 선택

다음 예는 페이지에서 현재 선택한 항목을 선택 취소하는 방법을 보여줍니다. 현재 페이지로 설정하면 됩니다.

slides/selection/selection.gs
// Unselect one or more page elements already selected.
//
// In case one or more page elements in the first slide are selected, setting the
// same (or any other) slide page as the current page would do the unselect.
//
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  slide.selectAsCurrentPage();

페이지 요소 선택

다음 예는 페이지에서 현재 선택한 항목을 선택 취소하는 방법을 보여줍니다. 한 페이지 요소를 선택하여 선택 항목에서 다른 모든 항목을 삭제합니다.

slides/selection/selection.gs
// Unselect one or more page elements already selected.
//
// In case one or more page elements in the first slide are selected,
// selecting any pageElement in the first slide (or any other pageElement) would
// do the unselect and select that pageElement.
//
  const slide = SlidesApp.getActivePresentation().getSlides()[0];
  slide.getPageElements()[0].select();