選取項目是指在開啟的簡報頁面中目前選取的項目,例如一段醒目文字或表格。本指南說明如何使用 Apps Script 取得及設定有效簡報中的選取項目。
所選項目是指令碼啟動時的快照。如果使用者點選並在指令碼執行期間變更選取項目,系統不會反映這些變更。
選取項目和選取類型
您可以使用 Selection 類別讀取選取項目。這個類別提供各種方法,可根據所選物件的類型取得所選物件。
SelectionType 列舉代表所選物件的特定類型。舉例來說,如果使用者選取了某個形狀中的部分文字,選取類型就會是「文字」TEXT。在這種情況下,您可以使用 selection.getTextRange()
方法擷取所選文字範圍。
您也可以擷取包含所選項目的物件。以上述範例為例,您可以使用 selection.getPageElementRange().getPageElements()[0]
擷取包含所選文字的形狀。同樣地,包含包圍形狀的頁面就是目前的有效頁面;如要擷取該頁面,請使用 selection.getCurrentPage()
。
朗讀所選內容
如要讀取所選項目,請使用 Presentation.getSelection() 方法,如以下範例所示:
讀取目前網頁
如要擷取使用者目前正在查看的頁面,請使用 getSelection() 和 getCurrentPage() 方法,如下所示:
請注意,目前的網頁可能屬於下列任一類型:
目前的頁面可選取一或多個物件,而 SelectionType 會決定選取的類型。
根據選取類型讀取選取項目
以下範例說明如何使用選取類型,以適當的類型方式讀取目前的選取項目。
朗讀選取的文字
您可以使用 Selection.getTextRange() 方法讀取文字選取範圍。文字選取有兩種:
- 範圍選取:如果形狀包含文字「Hello」,且選取「He」,則傳回的範圍會包含 startIndex=0,以及 endIndex=2。
- 游標選取範圍:如果形狀包含文字「Hello」,且游標位於「H」之後 (「H|ello」),則系統會傳回空白範圍,其中 startIndex=1,endIndex=1。
修改所選項目
指令碼可以修改使用者的選取項目。在指令碼執行期間,指令碼對簡報所做的任何選取變更都會反映在後續的選取作業中。
只有在指令碼執行作業完成後,或在呼叫 Presentation.saveAndClose()
時,使用者的瀏覽器才會反映所做的選取變更。
選取目前頁面
您可以呼叫 selectAsCurrentPage() 方法,將有效呈現內容中的頁面選為目前的頁面。這個方法會移除任何先前的頁面元素、頁面或文字選取項目。因此,在目前的頁面上使用這個方法,即可取消選取頁面上的任何目前選取項目。例如:
選取網頁元素
如要選取網頁中的網頁元素,請使用 PageElement.select() 方法。這麼做也會取消選取先前選取的任何網頁元素。
例如:
選取多個網頁元素
如要將其他網頁元素附加至所選項目,請使用 PageElement.select(false) 方法。所有頁面元素都必須位於目前的頁面中。
轉換所選項目
指令碼執行的編輯作業可以轉換目前的選取項目,讓所選取的項目因編輯而有所變更。例如:
- 假設您選取了兩個圖形 A 和 B。
- 接著,您的指令碼會移除圖形 A。
- 因此,系統會根據編輯內容轉換所選範圍,只選取形狀 B。
以下範例說明如何透過操控所選頁面元素,轉換所選項目。
選取文字
您可以使用 TextRange.select() 方法,選取圖形或表格儲存格中的文字。如果文字包含在圖形中,系統也會一併選取該圖形。如果文字包含在資料表儲存格中,系統會一併選取該資料表儲存格及其內含的表格。
這也會將父項頁面設為目前的頁面。
圖形中的範圍選取
以下範例說明如何在形狀中包含的文字中選取範圍。
在圖形中選取游標
以下範例說明如何在形狀中包含的文字中選取游標。
表格儲存格中的範圍選取
以下範例說明如何在表格儲存格中,選取文字範圍。
TableCell 中的游標選取
以下範例說明如何在表格儲存格內的文字中選取游標。
選取轉換作業,含文字編輯
以下範例說明如何透過編輯所選文字來轉換所選範圍。
取消選取
目前沒有明確的方法可取消選取文字或頁面元素。不過,您可以使用 Page.selectAsCurrentPage()
或 pageElement.select()
方法達成這個結果。
選取目前頁面
以下範例說明如何將頁面設為目前的頁面,藉此取消選取該頁面上的任何目前選取項目。
選取網頁元素
以下範例說明如何選取一個頁面元素,藉此取消選取頁面上的任何目前選項,進而從選項中移除所有其他項目。