Sunuda öğeleri seçme

Seçim, açık bir sunu sayfasında şu anda seçili olan her şeydir (ör. vurgulanmış bir metin aralığı veya tablo). Bu kılavuzda, Apps Komut Dosyası'nı kullanarak etkin bir sunuda seçimi nasıl alacağınız ve ayarlayacağınız açıklanmaktadır.

Seçim, komut dosyası başladığında nasılsa o şekildeki bir anlık görüntüdür. Kullanıcı komut dosyası çalışırken tıklarsa ve seçim değişirse bu değişiklikler yansıtılmaz.

Seçimler ve seçim türü

Selection sınıfını kullanarak seçimi okuyabilirsiniz. Sınıfta, seçilen nesnelerin türüne göre seçilen nesneleri almak için çeşitli yöntemler bulunur.

SelectionType numaralandırması, seçilen nesnelerin türünü temsil eder. Örneğin, kullanıcı bir şekil içinde metin seçtiyse seçim türü TEXT olur. Bu durumda, selection.getTextRange() yöntemini kullanarak seçili metin aralığını alabilirsiniz.

Seçimi içeren nesneyi de alabilirsiniz. Yukarıdaki örneğe devam edersek selection.getPageElementRange().getPageElements()[0] kullanarak seçili metni içeren şekli alabilirsiniz. Benzer şekilde, kapsayan şekli içeren sayfa geçerli etkin sayfadır. Bu sayfayı almak için selection.getCurrentPage() simgesini kullanın.

Seçimi okuma

Seçimi okumak için aşağıdaki örnekte gösterildiği gibi Presentation.getSelection() yöntemini kullanın:

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

Geçerli sayfayı okuma

Kullanıcının görüntülediği mevcut Page'i almak için getSelection() ve getCurrentPage() yöntemlerini aşağıdaki gibi kullanın:

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

Geçerli sayfanın aşağıdaki türlerden herhangi biri olabileceğini unutmayın:

Geçerli sayfada bir veya daha fazla nesne seçilebilir ve SelectionType seçim türünü belirler.

Seçimi, seçim türüne göre okuma

Aşağıdaki örnekte, seçim türünü kullanarak mevcut seçimi türe uygun bir şekilde nasıl okuyabileceğiniz gösterilmektedir.

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

Metin seçimlerini okuma

Selection.getTextRange() yöntemini kullanarak metin seçimini okuyabilirsiniz. İki tür metin seçimi vardır:

  • Aralık seçimi: Bir şekilde "Merhaba" metni varsa ve "Me" seçiliyse döndürülen aralıkta startIndex=0 ve endIndex=2 olur.
  • İmleçle seçim: Bir şekil "Merhaba" metnini içeriyorsa ve imleç "M"den sonra ("M|erhaba") ise döndürülen aralık, startIndex=1 ve endIndex=1 olan boş bir aralıktır.

Seçimi değiştirme

Komut dosyası, kullanıcının seçimini değiştirebilir. Komut dosyasının sunumda yaptığı tüm seçim değişiklikleri, komut dosyası yürütülürken sonraki seçim işlemlerine yansıtılır.

Seçim değişiklikleri, yalnızca komut dosyası yürütme tamamlandıktan sonra veya Presentation.saveAndClose() çağrıldığında kullanıcının tarayıcısına yansıtılır.

Geçerli sayfayı seçme

Etkin sunudaki bir sayfa, selectAsCurrentPage() yöntemi çağrılarak geçerli sayfa olarak seçilebilir. Bu yöntem, önceki sayfa öğelerini, sayfaları veya metin seçimlerini kaldırır. Bu nedenle, bu yöntemi geçerli sayfada kullandığınızda sayfadaki mevcut seçimlerin tümünü kaldırabilirsiniz. Örneğin:

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

Sayfa öğesi seçme

Bir sayfadaki sayfa öğesini seçmek için PageElement.select() yöntemini kullanın. Bu işlem, daha önce seçilmiş tüm sayfa öğelerinin seçimini de kaldırır.

Örneğin:

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

Birden fazla sayfa öğesi seçme

Seçime ek sayfa öğeleri eklemek için PageElement.select(false) yöntemini kullanın. Tüm sayfa öğeleri geçerli sayfada olmalıdır.

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

Seçimi dönüştürme

Komut dosyanızın yaptığı düzenlemeler, mevcut seçimi dönüştürebilir. Böylece, düzenleme sonucunda seçilenler değişir. Örneğin:

  1. A ve B olmak üzere iki şeklin seçili olduğunu varsayalım.
  2. Ardından komut dosyanız A şeklini kaldırır.
  3. Sonuç olarak, seçim düzenlemeye göre dönüştürülür ve yalnızca B şekli seçilir.

Aşağıdaki örnekte, seçilen sayfa öğeleri değiştirilerek seçimin nasıl dönüştürülebileceği gösterilmektedir.

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

Metin seçme

Şekil veya tablo hücresinde bulunan metin, TextRange.select() yöntemi kullanılarak seçilebilir. Metin bir şeklin içindeyse bu şekil de seçilir. Metin bir tablo hücresinde yer alıyorsa hem tablo hücresi hem de onu içeren tablo seçilir.

Bu işlem, üst sayfayı da geçerli sayfa olarak ayarlar.

Şekilde aralık seçimi

Aşağıdaki örnekte, şekil içinde yer alan metinde nasıl aralık seçimi yapılacağı gösterilmektedir.

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

Şekilde imleç seçimi

Aşağıdaki örnekte, şekil içinde yer alan metinde imleçle nasıl seçim yapılacağı gösterilmektedir.

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

Tablo hücresinde aralık seçimi

Aşağıdaki örnekte, tablo hücresinde bulunan metinde nasıl aralık seçimi yapılacağı gösterilmektedir.

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'de imleç seçimi

Aşağıdaki örnekte, tablo hücresinde bulunan metinde nasıl imleç seçimi yapılacağı gösterilmektedir.

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

Metin düzenlemeleriyle seçim dönüştürme

Aşağıdaki örnekte, seçili metin düzenlenerek seçimin nasıl dönüştürülebileceği gösterilmektedir.

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

Seçimi kaldırma

Metin veya sayfa öğelerinin seçimini kaldırmak için açık yöntemler yoktur. Ancak bu sonuç, Page.selectAsCurrentPage() veya pageElement.select() yöntemleri kullanılarak elde edilebilir.

Mevcut bir sayfayı seçin

Aşağıdaki örnekte, bir sayfayı geçerli sayfa olarak ayarlayarak sayfadaki mevcut seçimlerin nasıl kaldırılacağı gösterilmektedir.

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

Bir sayfa öğesi seçin

Aşağıdaki örnekte, bir sayfa öğesi seçilerek sayfadaki mevcut seçimlerin nasıl kaldırılacağı gösterilmektedir. Bu işlem, diğer tüm öğeleri seçimden kaldırır.

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