การเลือกรายการภายในงานนำเสนอ

การเลือกคือสิ่งที่เลือกอยู่ในหน้างานนำเสนอแบบเปิด เช่น ช่วงของข้อความที่ไฮไลต์หรือตาราง คู่มือนี้บอกวิธีรับ และตั้งค่าการเลือกในงานนำเสนอที่ใช้งานอยู่โดยใช้ Apps Script

สิ่งที่เลือกคือภาพรวมของสิ่งที่จะเกิดขึ้นเมื่อสคริปต์เริ่มต้น หากผู้ใช้ และการเปลี่ยนแปลงที่เลือกขณะที่สคริปต์ทำงานอยู่ การเปลี่ยนแปลงเหล่านั้น จะไม่ปรากฏ

การเลือกและประเภทการเลือก

คุณสามารถอ่านรายการที่เลือกได้โดยใช้ การเลือก คลาสนี้มีเมธอดต่างๆ ในการรับออบเจ็กต์ที่เลือกตามประเภทของออบเจ็กต์ที่เลือก

enum SelectionType แสดงถึงประเภทที่เฉพาะเจาะจงของออบเจ็กต์ที่เลือก เช่น หากผู้ใช้มี เลือกข้อความบางส่วนในรูปร่าง ประเภทการเลือกจะ เป็น TEXT ในกรณีนี้ คุณสามารถเรียกช่วงข้อความที่เลือกได้โดยใช้ selection.getTextRange() วิธี

คุณยังเรียกออบเจ็กต์ที่มีรายการที่เลือกได้ด้วย ใช้ต่อ ตัวอย่างข้างต้น คุณสามารถดึงข้อมูลรูปร่างที่มีข้อความที่เลือกได้โดยใช้ selection.getPageElementRange().getPageElements()[0] ในทำนองเดียวกัน หน้าที่ มีรูปร่างที่ล้อมรอบคือหน้าที่ใช้งานอยู่ในปัจจุบัน ถึง เรียกข้อมูลหน้าดังกล่าว ให้ใช้ selection.getCurrentPage()

การอ่านรายการที่เลือก

หากต้องการอ่านรายการที่เลือก ให้ใช้ Presentation.getSelection() ตามที่แสดงในตัวอย่างต่อไปนี้

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

การอ่านหน้าปัจจุบัน

ในการเรียกหน้าปัจจุบันที่ ที่ผู้ใช้กำลังดูอยู่ ให้ใช้ getSelection() และ getCurrentPage() วิธีการดังต่อไปนี้

สไลด์/selection/selection.gs
const currentPage = SlidesApp.getActivePresentation().getSelection().getCurrentPage();

โปรดทราบว่าหน้าปัจจุบันอาจเป็นประเภทใดประเภทหนึ่งดังต่อไปนี้

หน้าปัจจุบันมีออบเจ็กต์ที่เลือกอย่างน้อย 1 รายการและ SelectionType จะเป็นตัวกำหนดประเภทของการเลือก

อ่านสิ่งที่เลือกตามประเภทรายการที่เลือก

ตัวอย่างต่อไปนี้แสดงวิธีที่คุณสามารถใช้ประเภทการเลือกเพื่ออ่าน ที่เลือกไว้ในปัจจุบันในลักษณะที่เหมาะสมกับประเภท

สไลด์/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;
}

การอ่านข้อความที่เลือก

คุณสามารถอ่านการเลือกข้อความได้โดยใช้ เมธอด Selection.getTextRange() การเลือกข้อความมี 2 ประเภทดังนี้

  • การเลือกช่วง: หากรูปร่างมีข้อความ "Hello" และเลือก "He" ไว้ ช่วงที่ได้รับจะมี startIndex=0 และ endIndex=2
  • การเลือกเคอร์เซอร์: หากรูปร่างมีข้อความ "สวัสดี" และเคอร์เซอร์คือ หลัง "H" ("H|ello") ช่วงที่ส่งคืนจะเป็นช่วงว่างเปล่าที่มี startIndex=1 และ endIndex=1

แก้ไขการเลือก

สคริปต์สามารถแก้ไขตัวเลือกของผู้ใช้ การเปลี่ยนแปลงการเลือกที่สคริปต์ทำกับงานนำเสนอจะแสดงในการดำเนินการการเลือกที่ตามมาตลอดระยะเวลาที่เรียกใช้สคริปต์

การเปลี่ยนแปลงการเลือกจะแสดงในเบราว์เซอร์ของผู้ใช้หลังจากสคริปต์เท่านั้น การดำเนินการเสร็จสมบูรณ์ หรือเมื่อมีการเรียกใช้ Presentation.saveAndClose()

การเลือกหน้าปัจจุบัน

เลือกหน้าในงานนำเสนอที่ใช้งานอยู่เป็นหน้าปัจจุบันได้โดยเรียกใช้ เมธอด selectAsCurrentPage() วิธีนี้จะนําองค์ประกอบหน้าเว็บ หน้า หรือการเลือกข้อความก่อนหน้าออก ดังนั้นการใช้ วิธีนี้ในหน้าปัจจุบันจะช่วยให้คุณสามารถยกเลิกการเลือกปัจจุบัน เช่น

สไลด์/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
//

การเลือกองค์ประกอบของหน้า

หากต้องการเลือกองค์ประกอบของหน้าในหน้าเว็บ ให้ใช้เมธอด PageElement.select() ซึ่งจะเป็นการยกเลิกการเลือกองค์ประกอบหน้าเว็บที่เลือกไว้ก่อนหน้านี้ด้วย

เช่น

สไลด์/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
//

การเลือกองค์ประกอบของหน้าหลายรายการ

หากต้องการเพิ่มองค์ประกอบอื่นๆ ของหน้าลงในการเลือก ให้ใช้ PageElement.select(false) องค์ประกอบทั้งหมดของหน้าต้องอยู่ในหน้าปัจจุบัน

สไลด์/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
//

เปลี่ยนรูปแบบสิ่งที่เลือก

การแก้ไขที่สคริปต์ดำเนินการจะเปลี่ยนการเลือกปัจจุบันเพื่อให้สิ่งที่เลือกมีการเปลี่ยนแปลงตามการแก้ไข เช่น

  1. สมมติว่าคุณเลือกรูปร่าง A และ B ไว้ 2 รูป
  2. ถัดไป สคริปต์ของคุณจะนำรูปร่าง A ออก
  3. ด้วยเหตุนี้ ตัวเลือกจึงเปลี่ยนรูปแบบเทียบกับการแก้ไข เพื่อให้มีเฉพาะ เลือกรูปร่าง B

ตัวอย่างต่อไปนี้แสดงวิธีเปลี่ยนรูปแบบรายการที่เลือกโดยการควบคุม องค์ประกอบของหน้าที่เลือกไว้

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

การเลือกข้อความ

คุณเลือกข้อความที่อยู่ในรูปร่างหรือในเซลล์ตารางได้โดยใช้เมธอด TextRange.select() หากข้อความอยู่ในรูปร่าง ระบบจะเลือกรูปร่างนั้นด้วย หากข้อความอยู่ในเซลล์ของตาราง เซลล์ของตารางนั้นและเซลล์ที่ล้อมรอบอยู่ เลือกทั้ง 2 ตาราง

ซึ่งจะตั้งค่าหน้าหลักเป็นหน้าปัจจุบันด้วย

การเลือกช่วงในรูปร่าง

ตัวอย่างต่อไปนี้แสดงวิธีการเลือกช่วงในข้อความที่มี ได้เป็นรูปร่าง

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

การเลือกเคอร์เซอร์ในรูปร่าง

ตัวอย่างต่อไปนี้แสดงวิธีทําการเลือกเคอร์เซอร์ภายในข้อความที่อยู่ในรูปร่าง

สไลด์/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
//

การเลือกช่วงในเซลล์ตาราง

ตัวอย่างต่อไปนี้แสดงวิธีการเลือกช่วงในข้อความที่มี ในเซลล์ของตาราง

สไลด์/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

ตัวอย่างต่อไปนี้แสดงวิธีเลือกเคอร์เซอร์ในข้อความที่มี ในเซลล์ของตาราง

สไลด์/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
//

การเปลี่ยนรูปแบบการเลือกด้วยการแก้ไขข้อความ

ตัวอย่างต่อไปนี้แสดงวิธีเปลี่ยนรูปแบบรายการที่เลือกโดยการแก้ไข ข้อความที่เลือก

สไลด์/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
//

ยกเลิกการเลือก

ไม่มีวิธีการที่ชัดเจนในการยกเลิกการเลือกองค์ประกอบของข้อความหรือองค์ประกอบของหน้า อย่างไรก็ตาม จะได้ผลลัพธ์โดยใช้ Page.selectAsCurrentPage() หรือ pageElement.select() วิธี

เลือกหน้าปัจจุบัน

ตัวอย่างต่อไปนี้แสดงวิธียกเลิกการเลือกการเลือกปัจจุบันในหน้าเว็บ โดยการตั้งค่าหน้านั้นเป็นหน้าปัจจุบัน

สไลด์/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();

เลือกองค์ประกอบของหน้า

ตัวอย่างต่อไปนี้แสดงวิธียกเลิกการเลือกการเลือกปัจจุบันในหน้าเว็บ โดยเลือกองค์ประกอบของหน้า 1 รายการ ซึ่งจะเป็นการนำรายการอื่นๆ ออกจากการเลือกทั้งหมด

สไลด์/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();