Elemente in einer Präsentation auswählen

Die Auswahl ist die Auswahl, die aktuell auf einer geöffneten Präsentationsseite ausgewählt ist. etwa eine Spanne von hervorgehobenem Text oder eine Tabelle. In diesem Leitfaden erfahren Sie, wie Sie die Auswahl in einer aktiven Präsentation mithilfe von Apps Script abrufen und festlegen.

Die Auswahl ist eine Momentaufnahme vom Zeitpunkt des Skriptstarts. Wenn der Nutzer während der Ausführung des Scripts klickt und die Auswahl ändert, werden diese Änderungen nicht berücksichtigt.

Auswahl und Auswahltyp

Sie können die Auswahl mit dem Auswahl . Die Klasse bietet verschiedene Methoden, die ausgewählten Objekte basierend auf dem Typ der ausgewählten Objekte abzurufen.

Die SelectionType-Enumeration steht für den spezifischen Typ der ausgewählten Objekte. Wenn Nutzende beispielsweise Text in einer Form ausgewählt haben, sein TEXT. In diesem Fall können Sie den ausgewählten Textbereich mit der Methode selection.getTextRange()-Methode.

Sie können auch das Objekt abrufen, das die Auswahl enthält. die Fortsetzung des Im obigen Beispiel könnten Sie die Form mit dem ausgewählten Text mithilfe von selection.getPageElementRange().getPageElements()[0] Ähnlich verhält es sich bei der Seite, enthält die einschließende Form der aktuell aktiven Seite. bis um diese Seite abzurufen, verwenden Sie selection.getCurrentPage().

Auswahl wird gelesen

Verwenden Sie zum Lesen der Auswahl das Symbol Presentation.getSelection() wie im folgenden Beispiel gezeigt:

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

Aktuelle Seite lesen

Um die aktuelle Page abzurufen, die der angezeigt wird, verwenden Sie getSelection() und getCurrentPage() -Methoden so an:

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

Beachten Sie, dass es sich bei der aktuellen Seite um einen der folgenden Typen handeln kann:

Auf der aktuellen Seite können ein oder mehrere Objekte ausgewählt sein. Der Auswahltyp die Art der Auswahl.

Auswahl auf Basis des Auswahltyps lesen

Das folgende Beispiel zeigt, wie Sie den Auswahltyp verwenden können, um die aktuelle Auswahl typgerecht zu lesen.

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;
}

Textauswahl wird gelesen

Sie können die Textauswahl mit der Methode Selection.getTextRange() lesen. Es gibt zwei Arten der Textauswahl:

  • Bereichsauswahl: Wenn eine Form den Text „Hallo“ und „He“ enthält ist ausgewählt wurde, hat der zurückgegebene Bereich "startIndex=0" und "endIndex=2".
  • Cursorauswahl: Wenn eine Form den Text „Hello“ enthält und der Cursor nach „H“ („H|ello“), ist der zurückgegebene Bereich ein leerer Bereich mit startIndex=1 und endIndex=1.

Auswahl ändern

Das Skript kann die Nutzerauswahl ändern. Alle durch das Skript an der Präsentation vorgenommenen Auswahländerungen werden übernommen bei nachfolgenden Auswahlvorgängen für die Dauer der Skriptausführung.

Die Änderungen an der Auswahl werden erst nach dem Skript im Browser des Nutzers angezeigt. ausgeführt wird oder wenn Presentation.saveAndClose() aufgerufen wird.

Aktuelle Seite auswählen

Eine Seite in der aktiven Präsentation kann durch den Aufruf von Methode selectAsCurrentPage(). Mit dieser Methode wird jede vorherige Auswahl an Seitenelementen, Seiten oder Texten entfernt. Wenn Sie also Mit dieser Methode auf der aktuellen Seite können Sie die Auswahl aller aktuellen Auswahlmöglichkeiten auf der Seite Seite. Beispiel:

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
//

Seitenelement auswählen

Wenn Sie ein Seitenelement auf einer Seite auswählen möchten, verwenden Sie die Methode PageElement.select(). Dadurch wird auch die Auswahl aller zuvor ausgewählten Seitenelemente aufgehoben.

Beispiel:

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
//

Mehrere Seitenelemente auswählen

Um der Auswahl zusätzliche Seitenelemente hinzuzufügen, verwenden Sie die Methode Methode PageElement.select(false). Alle Seitenelemente müssen sich auf der aktuellen Seite befinden.

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
//

Auswahl transformieren

Durch Änderungen, die Ihr Skript durchführt, kann die aktuelle Auswahl transformiert werden, sodass was die ausgewählten Elemente infolge der Bearbeitung ändern. Beispiel:

  1. Angenommen, Sie haben die Formen A und B ausgewählt.
  2. Als Nächstes entfernt Ihr Script Form A.
  3. Dadurch wird die Auswahl anhand der Änderung transformiert, sodass nur Form B ausgewählt ist.

Das folgende Beispiel zeigt, wie die Auswahl durch Manipulation ausgewählter Seitenelemente transformiert werden kann.

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]
//

Text auswählen

In einer Form oder einer Tabellenzelle enthaltener Text kann mithilfe der TextRange.select()-Methode. Wenn der Text in einer Form enthalten ist, wird diese Form ebenfalls ausgewählt. Wenn sich der Text in einer Tabellenzelle befindet, werden sowohl die Tabellenzelle als auch die umgebende Tabelle ausgewählt.

Dadurch wird auch die übergeordnete Seite als aktuelle Seite festgelegt.

Bereichsauswahl in einer Form

Im folgenden Beispiel wird gezeigt, wie Sie einen Bereich in Text auswählen, der in einer Form enthalten ist.

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
//

Cursorauswahl in einer Form

Im folgenden Beispiel wird gezeigt, wie Sie den Cursor in einem Text auswählen, der in einer Form enthalten ist.

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
//

Bereichsauswahl in einer Tabellenzelle

Das folgende Beispiel zeigt, wie Sie eine Bereichsauswahl in enthaltenem Text treffen in einer Tabellenzelle.

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
//

Cursorauswahl in TableCell

Das folgende Beispiel zeigt, wie Sie eine Cursorauswahl in in einer Tabellenzelle.

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
//

Auswahltransformation mit Textbearbeitung

Das folgende Beispiel zeigt, wie die Auswahl durch Bearbeiten der ausgewählten Text.

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
//

Auswahl wird aufgehoben

Es gibt keine expliziten Methoden, die Auswahl von Text- oder Seitenelementen aufzuheben. Dieses Ergebnis kann jedoch mit den Methoden Page.selectAsCurrentPage() oder pageElement.select() erreicht werden.

Aktuelle Seite auswählen

Im folgenden Beispiel wird gezeigt, wie Sie alle aktuellen Auswahlen auf einer Seite aufheben, indem Sie diese Seite als aktuelle Seite festlegen.

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();

Seitenelement auswählen

Das folgende Beispiel zeigt, wie Sie die Auswahl einer aktuellen Auswahl auf einer Seite aufheben indem Sie ein Seitenelement auswählen. Dadurch werden alle anderen Elemente aus der Auswahl entfernt.

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();