Keynoteでオープン中の最前面の書類の、現在表示中のスライド(ページ)上に存在する文字情報を取得して、macOS標準装備のテキストエディタ「テキストエディット」の新規書類上に取得した文字情報をすべて転送するAppleScriptです。
Keynote書類上に配置できるオブジェクトには、
このようなものがあります。
これらのうち文字情報が直接入力可能なtext itemおよびshapeを包括したiWork itemというオブジェクト、およびtableオブジェクトから文字情報を取得し、いろいろごみ取り(改行文字削除)を行なったりしたものをmacOS標準装備のテキストエディタに出力するものです。
Keynoteで作業中に編集中の書類内から文字情報を再利用したい場合のために作成したものです。
▲このようなKeynoteのスライド(ページ)上の文字情報を
▲一括で取得してテキストエディタの新規書類上に転送
macOS標準装備のスクリプトメニューに入れて呼び出しています。
AppleScript名:Keynoteでオープン中の最前面の現在のページのテキストアイテムを取得してテキスト化 |
— Created 2018-11-28 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" set repTargList to {string id 10, string id 11, string id 13} –LF,CR,VTab一括置換 set t1List to {} set t2List to {} tell application "Keynote" if (count every document) = 0 then return tell front document tell current slide if (count every iWork item) > 0 then set t1List to object text of every iWork item –text item, shapeなどを包括したオブジェクト end if if (count every table) > 0 then set t2List to value of every cell of every table end if end tell end tell end tell set tList to t1List & t2List set tList to FlattenList(tList) of me –force lists to 1D list –タイトルごとにゴミ取り(改行文字の削除) set outList to {} repeat with i in tList set j1 to contents of i if (j1 is not equal to missing value) and (j1 is not equal to "") then set jTmp to (paragraphs of j1) as string –しつこい改行文字(?)を除去するための処理 set j2 to replaceTextMultiple(jTmp, repTargList, "") of me as string if j2 is not equal to "" then set the end of outList to j2 end if end if end repeat –リストを改行で区切ったテキストに変換 set aStr to listToStringUsingTextItemDelimiter(outList, return) of me –得られたテキストをTextEditの新規書類上に出力 tell application "TextEdit" activate make new document set text of front document to aStr end tell –リストを指定デリミタで区切ったテキストに変換 on listToStringUsingTextItemDelimiter(sourceList as list, textItemDelimiter as string) set anArray to current application’s NSArray’s arrayWithArray:sourceList set aString to anArray’s componentsJoinedByString:textItemDelimiter return (aString as string) end listToStringUsingTextItemDelimiter –任意のデータから特定の文字列を複数パターン一括置換 on replaceTextMultiple(origData as string, origTexts as list, repText as string) set curDelim to AppleScript’s text item delimiters set AppleScript’s text item delimiters to origTexts set origData to text items of origData set AppleScript’s text item delimiters to {repText} set origData to origData as text set AppleScript’s text item delimiters to curDelim return origData end replaceTextMultiple –多次元配列の強制1次元配列化 By Paul Berkowitz on FlattenList(aList as list) set oldDelims to AppleScript’s text item delimiters set AppleScript’s text item delimiters to {"????"} set aString to aList as text set aList to text items of aString set AppleScript’s text item delimiters to oldDelims return aList end FlattenList |
More from my site
(Visited 58 times, 1 visits today)