Elemente in einer Präsentation auswählen

Bei Auswahl handelt es sich um den aktuell auf einer geöffneten Präsentationsseite ausgewählten Text, z. B. ein Bereich mit markiertem Text oder eine Tabelle. In diesem Leitfaden erfahren Sie, wie Sie mit Apps Script die Auswahl in einer aktiven Präsentation abrufen und festlegen.

Die Auswahl ist eine Momentaufnahme des Zustands beim Start des Skripts. Wenn der Nutzer klickt und sich die Auswahl während der Ausführung des Skripts ändert, werden diese Änderungen nicht berücksichtigt.

Auswahlen und Auswahltyp

Sie können die Auswahl mithilfe der Klasse Selection lesen. Die Klasse verfügt über verschiedene Methoden, um die ausgewählten Objekte basierend auf dem Typ der ausgewählten Objekte abzurufen.

Die Aufzählung SelectionType stellt den spezifischen Typ der ausgewählten Objekte dar. Wenn der Nutzer beispielsweise Text in einer Form ausgewählt hat, ist der Auswahltyp TEXT. In diesem Fall können Sie den ausgewählten Textbereich mit der Methode selection.getTextRange() abrufen.

Sie können auch das Objekt abrufen, das die Auswahl enthält. Wenn Sie das obige Beispiel fortsetzen, können Sie mit selection.getPageElementRange().getPageElements()[0] die Form abrufen, die den ausgewählten Text enthält. Ebenso ist die Seite mit der umschließenden Form die aktuell aktive Seite. Verwenden Sie selection.getCurrentPage(), um diese Seite abzurufen.

Auswahl wird gelesen

Verwenden Sie zum Lesen der Auswahl die Methode Presentation.getSelection(), wie im folgenden Beispiel gezeigt:

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

Aktuelle Seite lesen

Mit den folgenden Methoden können Sie die aktuelle Page des Nutzers abrufen. Verwenden Sie dazu die Methoden getSelection() und getCurrentPage():

folien/auswahl/auswahl.gs
const currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

Beachten Sie, dass die aktuelle Seite einen der folgenden Typen haben kann:

Auf der aktuellen Seite können ein oder mehrere Objekte ausgewählt sein. Mit „SelectionType“ wird der Auswahltyp bestimmt.

Die Auswahl wird basierend auf dem Auswahltyp gelesen

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

folien/auswahl/auswahl.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“ enthält und „Er“ ausgewählt ist, 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“) steht, ist der zurückgegebene Bereich ein leerer Bereich mit „startIndex=1“ und „endIndex=1“.

Auswahl ändern

Das Skript kann die Auswahl des Nutzers ändern. Alle Auswahländerungen, die das Skript an der Präsentation vornimmt, werden in nachfolgenden Auswahlvorgängen für die Dauer der Skriptausführung berücksichtigt.

Die Auswahländerungen werden erst nach Abschluss der Skriptausführung oder beim Aufruf von Presentation.saveAndClose() im Browser des Nutzers angezeigt.

Aktuelle Seite auswählen

Eine Seite in der aktiven Präsentation kann durch Aufrufen der Methode selectAsCurrentPage() als aktuelle Seite ausgewählt werden. Mit dieser Methode werden alle vorherigen Seitenelemente, Seiten oder Textauswahlen entfernt. Wenn Sie also diese Methode auf der aktuellen Seite verwenden, können Sie die Auswahl aller aktuellen Auswahlen auf der Seite aufheben. Beispiel:

folien/auswahl/auswahl.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

Verwenden Sie die Methode PageElement.select(), um ein Seitenelement auf einer Seite auszuwählen. Dadurch wird auch die Auswahl aller zuvor ausgewählten Seitenelemente aufgehoben.

Beispiel:

folien/auswahl/auswahl.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

Mit der Methode PageElement.select(false) können Sie der Auswahl weitere Seitenelemente anhängen. Alle Seitenelemente müssen sich auf der aktuellen Seite befinden.

folien/auswahl/auswahl.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 das Skript ausgeführte Änderungen können die aktuelle Auswahl transformieren, sodass sich die Auswahl entsprechend ändert. Beispiel:

  1. Angenommen, Sie haben die beiden Formen A und B ausgewählt.
  2. Als Nächstes entfernt Ihr Skript Form A.
  3. Daher wird die Auswahl in Bezug auf die Bearbeitung transformiert, sodass nur Form B ausgewählt wird.

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

folien/auswahl/auswahl.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

Text, der in einer Form oder einer Tabellenzelle enthalten ist, kann mit der Methode TextRange.select() ausgewählt werden. Wenn der Text in einer Form enthalten ist, wird diese Form ebenfalls ausgewählt. Wenn der Text in einer Tabellenzelle enthalten ist, werden sowohl diese Tabellenzelle als auch die zugehörige Tabelle ausgewählt.

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

Bereichsauswahl in einer Form

Das folgende Beispiel zeigt, wie Sie eine Bereichsauswahl in Text in einer Form vornehmen.

folien/auswahl/auswahl.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

Das folgende Beispiel zeigt, wie Sie eine Cursorauswahl in Text in einer Form treffen.

folien/auswahl/auswahl.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 Text in einer Tabellenzelle auswählen.

folien/auswahl/auswahl.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 Text in einer Tabellenzelle vornehmen.

folien/auswahl/auswahl.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 Textbearbeitungen

Das folgende Beispiel zeigt, wie die Auswahl durch Bearbeiten des ausgewählten Texts transformiert werden kann.

folien/auswahl/auswahl.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

Das folgende Beispiel zeigt, wie Sie die Auswahl einer aktuellen Auswahl auf einer Seite aufheben, indem Sie diese Seite als aktuelle Seite festlegen.

folien/auswahl/auswahl.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 und so alle anderen Elemente aus der Auswahl entfernen.

folien/auswahl/auswahl.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();