Sunuda öğeleri seçme

Seçim, açık bir sunu sayfasında o anda seçili olandır (ör. vurgulanan metin aralığı veya bir tablo). Bu kılavuzda, Apps Komut Dosyası'nı kullanarak etkin bir sunuda nasıl seçim yapılacağı ve nasıl ayarlanacağı açıklanmaktadır.

Bu seçim, komut dosyası başlatıldığında geçerli olan anlık durumu ifade eder. Komut dosyası çalışırken kullanıcı tıklar ve seçim değişirse bu değişiklikler yansıtılmaz.

Seçimler ve seçim türü

Seçim sınıfını kullanarak seçimi okuyabilirsiniz. Sınıfın, seçilen nesnelerin türüne göre seçilen nesneleri almak için çeşitli yöntemleri vardır.

SelectionType sıralaması, seçilen nesnelerin belirli türünü temsil eder. Örneğin, kullanıcı bir şekilde metin seçtiyse seçim türü METİN olur. Bu durumda, selection.getTextRange() yöntemini kullanarak seçilen metin aralığını alabilirsiniz.

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

Seçim okunuyor

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

slaytlar/seçim/seçim.gs
const selection = SlidesApp.getActivePresentation().getSelection();

Geçerli sayfayı okuma

Kullanıcının görüntülemekte olduğu geçerli Sayfa'yı almak için getSelection() ve getCurrentPage() yöntemlerini aşağıdaki gibi kullanın:

slaytlar/seçim/seçim.gs
const currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

Geçerli sayfa, aşağıdaki türlerden herhangi biri olabilir:

Geçerli sayfada bir veya daha fazla nesne seçilmiş olabilir ve Seçim Türü, seçim türünü belirler.

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

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

slaytlar/seçim/seçim.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çimleri okunuyor

Metin seçimini okumak için Selection.getTextRange() yöntemini kullanabilirsiniz. İki tür metin seçimi vardır:

  • Aralık seçimi: Bir şekil "Hello" metnini içeriyorsa ve "He" seçiliyse döndürülen aralıkta startIndex=0 ve endIndex=2 bulunur.
  • İmleç seçimi: Bir şekil "Hello" metnini içeriyorsa ve imleç "H"den ("H|ello") sonraysa döndürülen aralık,startIndex=1 ve endIndex=1 ile boş aralıktır.

Seçim değiştiriliyor

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

Seçim değişiklikleri, yalnızca komut dosyası yürütme işlemi 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. Dolayısıyla, geçerli sayfada bu yöntemi kullanmak, sayfadaki mevcut seçimlerin seçimini kaldırabilmenizi sağlar. Örneğin:

slaytlar/seçim/seçim.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, önceden seçilmiş sayfa öğelerinin seçimini de kaldırır.

Örneğin:

slaytlar/seçim/seçim.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.

slaytlar/seçim/seçim.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çim dönüştürülüyor

Komut dosyanızın gerçekleştirdiği düzenlemeler, mevcut seçimi dönüştürebilir ve böylece, seçilen öğe düzenleme sonucunda değişir. Örneğin:

  1. A ve B şeklinde iki şeklinizi seçtiğinizi 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 böylece 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.

slaytlar/seçim/seçim.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

Bir şekilde veya tablo hücresinde yer alan metinler, TextRange.select() yöntemi kullanılarak seçilebilir. Metin bir şeklin içinde yer alıyorsa o şekil de seçilir. Metin bir tablo hücresinde bulunuyorsa bu tablo hücresi ve onu kapsayan tablo seçilir.

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

Bir şekilde aralık seçimi

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

slaytlar/seçim/seçim.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
//

Bir şekilde imleç seçimi

Aşağıdaki örnekte, bir şekilde yer alan metin içinde imleç seçiminin nasıl yapılacağı gösterilmektedir.

slaytlar/seçim/seçim.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, bir tablo hücresinde yer alan metinde nasıl aralık seçimi yapılacağı gösterilmektedir.

slaytlar/seçim/seçim.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, bir tablo hücresinde yer alan metin içinde imleç seçiminin nasıl yapılacağı gösterilmektedir.

slaytlar/seçim/seçim.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üşümü

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

slaytlar/seçim/seçim.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çim kaldırılıyor

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

Geçerli bir sayfayı seç

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

slaytlar/seçim/seçim.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();

Sayfa öğesi seçin

Aşağıdaki örnekte, bir sayfa öğesi seçerek diğer tüm öğelerin seçimden nasıl kaldırılacağıyla ilgili sayfadaki mevcut seçimlerin nasıl kaldırılacağı gösterilmektedir.

slaytlar/seçim/seçim.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();