Keynoteのselectionを利用して、複数選択中のスライドを取得した処理を書いてみました。
ウィンドウ左側でアウトライン表示されているスライド一覧で複数選択しているものを、順次タイトルを取得して改行コードをはさんで連結したテキスト化してクリップボードに内容を転送します。内容をテキストエディタに転送して加工するために作ったものです。
Keynote用のScriptは必要に迫られて書くことが多く、本Scriptも実際に必要に迫られて書いています。ほぼ書き捨てレベルの内容でもあり、各スライドからタイトルが取得できない(タイトルが存在しない)場合には対処していません。
マスタースライドの名称を取得してタイトルオブジェクトの有無を判定するとか、各スライド上のタイトルオブジェクトにエラートラップを仕掛けつつアクセスする(存在しない場合にはエラー発生するもトラップを仕掛けてあるので処理が中断しない)、とかいった実戦レベルのScriptも(別途)書いておきたいところです。
selectionが返してくるスライド(ページ)のリストは、GUI上で後ろ(スライド番号の大きい方)から連続選択しても、前(スライド番号の小さい)のほうから連続選択しても、結果は変わりませんでした。スライド番号が小さい方から大きい方へとソートされた状態で取得されます。
AppleScript名:選択中のスライドのタイトルを取得して改行区切りテキストに変換 |
— – Created by: Takaaki Naganoya – Created on: 2020/05/08 — – Copyright © 2020 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set tList to {} tell application "Keynote" tell front document set aSel to selection set aLen to length of aSel if aLen < 2 then return repeat with i in aSel tell i tell default title item set aTitleStr to object text end tell set the end of tList to aTitleStr end tell end repeat end tell end tell set aStr to retArrowText(tList, return) of me set the clipboard to aStr –リストを任意のデリミタ付きでテキストに on retArrowText(aList, aDelim) set aText to "" set curDelim to AppleScript’s text item delimiters set AppleScript’s text item delimiters to aDelim set aText to aList as text set AppleScript’s text item delimiters to curDelim return aText end retArrowText |
More from my site
(Visited 159 times, 1 visits today)