Keynoteの最前面の書類の現在のスライド上にある表の選択中のセルに入っている丸つき数字(①②③…… )をインクリメント(+1)、デクリメント(ー1)するAppleScriptです。
書籍などに掲載する資料で、参照番号をいじくるツールがどうしても必要になって作ったものです。
macOS標準搭載のスクリプトメニューに入れて実行することを前提にしています。丸つき数字は、
①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿
のみを前提にして処理しています。その他の、
❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴ ➀➁➂➃➄➅➆➇➈➉ ➊➋➌➍➎➏➐➑➒➓ ⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾
については無視しています。
Keynote v11.2+macOS 12.1betaで作成&動作確認していますが、Keynoteのバージョンにはとくに(バグのあるバージョンでなれけば)依存している機能はありません。
▲選択範囲のセルに入っている丸つき数字のインクリメント(①②③→②③④)
▲選択範囲のセルに入っている丸つき数字のデクリメント(②③④→①②③)
AppleScript名:選択中の表の指定行・列のマル付き数字のインクリメント(+1).scpt |
— – Created by: Takaaki Naganoya – Created on: 2021/12/16 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — macOS 10.13 or later use framework "Foundation" use scripting additions –現在選択中の表オブジェクトを取得 set curTable to returnSelectedTableOnCurrentSlide() of me if curTable = false then return –現在選択中の表オブジェクト中の選択範囲中のセルをすべて取得(1D List) using terms from application "Keynote" tell curTable set cellList to every cell of selection range end tell end using terms from –list中の各アイテムの冒頭に順次丸つき数字を追加する using terms from application "Keynote" tell curTable repeat with i in cellList –選択範囲のセルの値を取り出す set aVal to value of i set vList to characters of (aVal as string) –1文字ずつに分割してループ set tmpOut to "" repeat with ii in vList set jj to contents of ii –丸付き数字の検出 set tmpR to holdNumberWithSignOnly(jj) of me if tmpR is equal to jj then –丸付き数字を数値にデコード set tmpNum to decodeNumFromNumWithSign(tmpR) of me –数値をインクリメント if tmpNum ≤ 50 then set tmpNum to tmpNum + 1 –インクリメント end if –数値を丸付き数字にエンコード set tmpR to convNumToNumWithSign(tmpNum) of me set tmpOut to tmpOut & tmpR else set tmpOut to tmpOut & jj end if end repeat set value of i to tmpOut end repeat end tell end using terms from –1~50の範囲の数値を丸つき数字に変換して返す on convNumToNumWithSign(aNum as number) if (aNum ≤ 0) or (aNum ≥ 50) then return "" set aStr to "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿" set bChar to character aNum of aStr return bChar end convNumToNumWithSign –指定文字列から丸つき数字のみ抽出する on holdNumberWithSignOnly(aStr as text) set aNSString to current application’s NSString’s stringWithString:aStr return (aNSString’s stringByReplacingOccurrencesOfString:"[^\\U000024EA-\\U000024EA\\U00002460-\\U00002473\\U00003251-\\U000032BF\\U000024FF-\\U000024FF\\U00002776-\\U0000277F\\U000024EB-\\U000024F4\\U00002780-\\U00002789\\U0000278A-\\U00002793\\U000024F5-\\U000024FE]" withString:"" options:(current application’s NSRegularExpressionSearch) range:{0, aNSString’s |length|()}) as text end holdNumberWithSignOnly –丸つき数字を数値にデコードする v2(簡略版) on decodeNumFromNumWithSign(aStr as string) set numStr1 to "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿" if numStr1 contains aStr then using terms from scripting additions set bNum to offset of aStr in numStr1 end using terms from return bNum end if return false end decodeNumFromNumWithSign –現在のスライド上で選択中の表オブジェクトへの参照を取得する on returnSelectedTableOnCurrentSlide() tell application "Keynote" tell front document tell current slide try set theTable to first table whose class of selection range is range on error return false –何も選択されてなかった場合 end try return theTable end tell end tell end tell end returnSelectedTableOnCurrentSlide |
AppleScript名:選択中の表の指定行・列のマル付き数字のデクリメント(ー1).scpt |
— – Created by: Takaaki Naganoya – Created on: 2021/12/16 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — macOS 10.13 or later use framework "Foundation" use scripting additions –現在選択中の表オブジェクトを取得 set curTable to returnSelectedTableOnCurrentSlide() of me if curTable = false then return –現在選択中の表オブジェクト中の選択範囲中のセルをすべて取得(1D List) using terms from application "Keynote" tell curTable set cellList to every cell of selection range end tell end using terms from –list中の各アイテムの冒頭に順次丸つき数字を追加する using terms from application "Keynote" tell curTable repeat with i in cellList –選択範囲のセルの値を取り出す set aVal to value of i set vList to characters of (aVal as string) –1文字ずつに分割してループ set tmpOut to "" repeat with ii in vList set jj to contents of ii –丸付き数字の検出 set tmpR to holdNumberWithSignOnly(jj) of me if tmpR is equal to jj then –丸付き数字を数値にデコード set tmpNum to decodeNumFromNumWithSign(tmpR) of me –数値をデクリメント if tmpNum > 1 then set tmpNum to tmpNum – 1 –デクリメント end if –数値を丸付き数字にエンコード set tmpR to convNumToNumWithSign(tmpNum) of me set tmpOut to tmpOut & tmpR else set tmpOut to tmpOut & jj end if end repeat set value of i to tmpOut end repeat end tell end using terms from –1~50の範囲の数値を丸つき数字に変換して返す on convNumToNumWithSign(aNum as number) if (aNum ≤ 0) or (aNum ≥ 50) then return "" set aStr to "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿" set bChar to character aNum of aStr return bChar end convNumToNumWithSign –指定文字列から丸つき数字のみ抽出する on holdNumberWithSignOnly(aStr as text) set aNSString to current application’s NSString’s stringWithString:aStr return (aNSString’s stringByReplacingOccurrencesOfString:"[^\\U000024EA-\\U000024EA\\U00002460-\\U00002473\\U00003251-\\U000032BF\\U000024FF-\\U000024FF\\U00002776-\\U0000277F\\U000024EB-\\U000024F4\\U00002780-\\U00002789\\U0000278A-\\U00002793\\U000024F5-\\U000024FE]" withString:"" options:(current application’s NSRegularExpressionSearch) range:{0, aNSString’s |length|()}) as text end holdNumberWithSignOnly –丸つき数字を数値にデコードする v2(簡略版) on decodeNumFromNumWithSign(aStr as string) set numStr1 to "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿" if numStr1 contains aStr then using terms from scripting additions set bNum to offset of aStr in numStr1 end using terms from return bNum end if return false end decodeNumFromNumWithSign –現在のスライド上で選択中の表オブジェクトへの参照を取得する on returnSelectedTableOnCurrentSlide() tell application "Keynote" tell front document tell current slide try set theTable to first table whose class of selection range is range on error return false –何も選択されてなかった場合 end try return theTable end tell end tell end tell end returnSelectedTableOnCurrentSlide |
More from my site
(Visited 79 times, 1 visits today)