「選択」とは、ハイライト表示されたテキストや表など、開いているプレゼンテーション ページで現在選択されている要素です。このガイドでは、Apps Script を使用して、アクティブなプレゼンテーションで選択範囲を取得および設定する方法について説明します。
これで、スクリプトが開始されたときの状態を確認できます。スクリプトの実行中にユーザーがクリックして選択内容が変更された場合、それらの変更は反映されません。
選択範囲と選択タイプ
選択範囲は Selection クラスを使用して読み取ることができます。このクラスには、選択されたオブジェクトのタイプに基づいて選択されたオブジェクトを取得するためのさまざまなメソッドがあります。
SelectionType 列挙型は、選択されたオブジェクトの特定のタイプを表します。たとえば、ユーザーがシェイプ内のテキストを選択した場合、選択タイプは TEXT になります。この場合、selection.getTextRange()
メソッドを使用して、選択したテキスト範囲を取得できます。
選択範囲を含むオブジェクトを取得することもできます。上記の例では、selection.getPageElementRange().getPageElements()[0]
を使用して、選択したテキストを含むシェイプを取得できます。同様に、図形を囲んでいるページは現在アクティブなページです。そのページを取得するには、selection.getCurrentPage()
を使用します。
選択内容の読み取り
選択範囲を読み取るには、次の例に示すように Presentation.getSelection() メソッドを使用します。
現在のページを読む
ユーザーが表示している現在の Page を取得するには、次のように getSelection() メソッドと getCurrentPage() メソッドを使用します。
現在のページは次のいずれかのタイプになります。
現在のページでは 1 つ以上のオブジェクトを選択できます。SelectionType によって選択の種類が決まります。
選択タイプに基づいて選択内容を読み取る
次の例は、選択タイプを使用して、タイプに適した方法で現在の選択を読み取る方法を示しています。
選択したテキストを読み上げています
テキスト選択部分を読み取るには、Selection.getTextRange() メソッドを使用します。テキストの選択には次の 2 種類があります。
- 範囲の選択: シェイプに「Hello」というテキストが含まれ、「He」が選択されている場合、返される範囲は startIndex=0、endIndex=2 となります。
- カーソルの選択: シェイプに「Hello」というテキストが含まれ、カーソルが「H」(「H|ello」)の後にある場合、返される範囲は空の範囲(startIndex=1、endIndex=1)になります。
選択内容の変更
スクリプトでユーザーの選択を変更できます。 スクリプトがプレゼンテーションに対して行った選択変更は、スクリプトの実行中に後続の選択オペレーションに反映されます。
選択内容は、スクリプトの実行が完了した後、または Presentation.saveAndClose()
が呼び出された場合にのみ、ユーザーのブラウザに反映されます。
現在のページを選択する
selectAsCurrentPage() メソッドを呼び出すと、アクティブなプレゼンテーション内のページを現在のページとして選択できます。このメソッドは、前のページ要素、ページ、テキスト選択を削除します。そのため、現在のページでこのメソッドを使用すると、ページ上の現在の選択を解除できます。例:
ページ要素を選択する
ページのページ要素を選択するには、PageElement.select() メソッドを使用します。また、以前に選択したページ要素の選択も解除されます。
例:
複数のページ要素を選択する
選択範囲にページ要素を追加するには、PageElement.select(false) メソッドを使用します。すべてのページ要素が現在のページ内に存在している必要があります。
選択範囲の変換
スクリプトが実行する編集によって現在の選択が「変換」され、編集の結果として選択内容が変化します。例:
- たとえば、A と B の 2 つのシェイプを選択したとします。
- 次に、スクリプトでシェイプ A を削除します。
- その結果、選択部分が編集に対して変換され、シェイプ B のみが選択されるようになります。
次の例は、選択したページ要素を操作して選択内容を変更する方法を示しています。
テキストの選択
シェイプまたは表のセルに含まれているテキストを選択するには、TextRange.select() メソッドを使用します。テキストがシェイプに含まれている場合は、そのシェイプも選択されます。 テキストが表のセルに含まれている場合は、その表のセルと、それを囲む表の両方が選択されます。
これによって親ページも現在のページに設定されます。
シェイプでの範囲の選択
次の例は、シェイプに含まれるテキスト内で範囲を選択する方法を示しています。
カーソルの選択範囲
次の例は、シェイプに含まれるテキスト内でカーソルを選択する方法を示しています。
表のセルでの範囲の選択
次の例は、表のセルに含まれるテキストで範囲を選択する方法を示しています。
TableCell でのカーソルの選択
次の例は、表のセルに含まれるテキスト内でカーソルを選択する方法を示しています。
テキスト編集を伴う選択変換
次の例は、選択したテキストを編集して選択範囲を変換する方法を示しています。
選択を解除しています
テキストまたはページ要素の選択を解除するための明示的なメソッドはありません。ただし、この結果を得るには Page.selectAsCurrentPage()
メソッドまたは pageElement.select()
メソッドを使用します。
現在のページを選択
次の例は、ページ上の現在の選択を解除するために、ページを現在のページとして設定しています。
ページ要素を選択
次の例では、1 つのページ要素を選択して、ページ上の現在の選択を解除し、他のすべてのアイテムを選択から削除する方法を示します。