プレゼンテーション内のアイテムの選択

selection は、開いているプレゼンテーション ページで現在選択されているものです。 ハイライト表示されます。このガイドでは、 Apps Script を使用して、アクティブなプレゼンテーションで選択内容を設定します。

選択は、スクリプトの開始時の状態のスナップショットです。ユーザーが 選択内容が変更されると 反映されません。

選択と選択タイプ

選択内容を読むには、 選択 クラスです。このクラスには、選択したオブジェクトのタイプに基づいて選択したオブジェクトを取得するさまざまなメソッドがあります。

SelectionType 列挙型は、選択したオブジェクトの特定のタイプを表します。たとえば、ユーザーがシェイプ内のテキストを選択した場合、選択タイプは TEXT になります。この場合は、 selection.getTextRange() メソッドを使用します。

選択範囲を含むオブジェクトを取得することもできます。引き続き 上記の例では、次のコマンドを使用して、選択したテキストを含むシェイプを取得できます。 selection.getPageElementRange().getPageElements()[0]。同様に 囲んでいる図形が現在アクティブなページである。から そのページを取得するには、selection.getCurrentPage() を使用します。

選択内容を読み上げる

選択範囲を読み上げるには、 Presentation.getSelection() メソッドを追加します。

スライド/選択/選択.gs
const selection = SlidesApp.getActivePresentation().getSelection();

現在のページを読み取っています

現在の Page を取得するには、 場合は、 getSelection() および getCurrentPage() メソッドを定義できます。

スライド/選択/選択.gs
const currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

現在のページは、次のいずれかのタイプです。

現在のページでは 1 つ以上のオブジェクトを選択できます。また SelectionType では 選択すると、選択のタイプが決まります。

選択タイプに基づいて選択内容を読み取る

次の例は、選択タイプを使用して 現在の選択内容を型に適した方法で表示できます。

スライド/選択/選択.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() メソッドを使用します。 テキストの選択には次の 2 種類があります。

  • 範囲の選択: 図形に「Hello」というテキストが含まれており、「He」が選択されている場合、返される範囲の startIndex は 0、endIndex は 2 になります。
  • カーソルの選択: シェイプに「Hello」というテキストが含まれていて、カーソルが 「H」の後("H|ello")の場合、返される範囲は (startIndex=1、endIndex=1)。

選択内容の変更

スクリプトはユーザーの選択を変更できます。 スクリプトがプレゼンテーションに対して行った選択変更は、すべて反映されます は、スクリプトの実行中に後続の選択操作で有効になります。

選択内容の変更は、スクリプトの後にのみユーザーのブラウザに反映されます。 Presentation.saveAndClose() が呼び出されたときにトリガーされます。

現在のページを選択する

次の呼び出しにより、アクティブなプレゼンテーションのページを現在のページとして選択できます。 selectAsCurrentPage() メソッド このメソッドは、以前のページ要素、ページ、テキストの選択をすべて削除します。現在のページでこのメソッドを使用すると、ページ上の現在の選択をすべて解除できます。例:

スライド/選択/選択.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() メソッドを使用します。 この操作を行うと、以前に選択したページ要素も選択解除されます。

例:

スライド/選択/選択.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) メソッドを使用します。 すべてのページ要素が現在のページに含まれている必要があります。

スライド/選択/選択.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. 2 つのシェイプ A と B を選択したとします。
  2. 次に、スクリプトによって形状 A が削除されます。
  3. その結果、選択範囲が編集に対して変換され、シェイプ B のみが選択されます。

次の例は、選択したページ要素を操作して選択範囲を変換する方法を示しています。

スライド/選択/選択.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() メソッドを使用して選択できます。テキストがシェイプに含まれている場合は、そのシェイプも選択されます。 テキストが表のセルに含まれている場合は、その表のセルとそのセルを囲む 両方が選択されています

また、親ページが現在のページとして設定されます。

シェイプの範囲選択

次の例は、テキストの範囲を選択する方法を示しています。 必要があります。

スライド/選択/選択.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
//

シェイプ内のカーソル選択

次の例は、テキスト内でカーソルを選択する方法を示しています。 必要があります。

スライド/選択/選択.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
//

表のセルの範囲選択

次の例は、テキストの範囲を選択する方法を示しています。 使用できます。

スライド/選択/選択.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 でのカーソル選択

次の例は、テキスト内でカーソルを選択する方法を示しています。 使用できます。

スライド/選択/選択.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
//

テキスト編集による選択変換

次の例は、 選択します。

スライド/選択/選択.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() メソッド。

現在のページを選択

次の例は、ページ上の現在の選択項目の選択を解除する方法を示しています そのページを現在のページとして設定します

スライド/選択/選択.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();

ページ要素を選択する

次の例は、ページ上の現在の選択項目の選択を解除する方法を示しています 選択することで、選択範囲から他のすべての項目を削除できます。

スライド/選択/選択.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();