1D List(1D Array)に入っているテキスト要素から、丸つき数字を抽出して数値化し、得られた数値のうち最小のものを求めるAppleScriptです。
こんな、丸つき数字のテキストが入った「表」をKeynote上に作成したときに、
項目を追加したり順番を入れ替えたりすると、セルの中に入れている丸つき数字も変更する必要があります。これが手作業でたいへんめんどくさいので、Scriptで処理できるようにサブルーチンを整備してみました。
やりたいことは割とシンプルなはずなのに、割といろいろ書かないと実現しない処理でもあります。
そして、本Scriptは置換対象のデータから丸つき数字部分を取り出して、最小のものを判別し、リナンバー時の開始値を既存のデータから推測するという処理のために作ったものです。
AppleScript名:1D Listに入っているテキストから丸つき数字を抽出して数値化し、最小のものを求める.scpt |
— – Created by: Takaaki Naganoya – Created on: 2021/11/26 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set aList to {"❹Script Editor", "②Xcode", "③ショートカット", "④Script Debugger④", "⑤SD Notary", "⑥UI Browser", "⑦Accessibility Inspector"} set aSmallestNum to getMinimumNumFromNumberWithSign(aList) of me –> 2 –1D Listに入っているテキストから丸つき数字を抽出して数値化し、最小のものを求める on getMinimumNumFromNumberWithSign(aList) set nList to {} repeat with i in aList set j to contents of i –与えられたテキストのうち、丸つき数字(白)の set j2 to holdNumberWithSignOnly(j) of me set n2List to characters of j2 –複数の丸つき数字が入っている場合に対処 repeat with ii in n2List set jj to contents of ii set tmpNum to decodeNumFromNumWithSign(jj) of me set the end of nList to tmpNum end repeat end repeat set anArray to current application’s NSArray’s arrayWithArray:nList set cRes to (anArray’s valueForKeyPath:"@min.self") as integer return cRes end getMinimumNumFromNumberWithSign –指定文字列から丸つき数字のみ抽出する 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 "①②③④⑤⑥⑦⑧⑨⑩⑪⑫⑬⑭⑮⑯⑰⑱⑲⑳㉑㉒㉓㉔㉕㉖㉗㉘㉙㉚㉛㉜㉝㉞㉟㊱㊲㊳㊴㊵㊶㊷㊸㊹㊺㊻㊼㊽㊾㊿" set numStr2 to "❶❷❸❹❺❻❼❽❾❿⓫⓬⓭⓮⓯⓰⓱⓲⓳⓴" set numStr3 to "➀➁➂➃➄➅➆➇➈➉" set numStr4 to "➊➋➌➍➎➏➐➑➒➓" set numStr5 to "⓵⓶⓷⓸⓹⓺⓻⓼⓽⓾" –set numStr6 to "⑴⑵⑶⑷⑸⑹⑺⑻⑼⑽⑾⑿⒀⒁⒂⒃⒄⒅⒆⒇" –set numStr7 to "1︎⃣2︎⃣3︎⃣4︎⃣5︎⃣8︎⃣9︎⃣" –set numStr8 to "⒈⒉⒊⒋⒌⒍⒎⒏⒐⒑⒒⒓⒔⒕⒖⒗⒘⒙⒚⒛" set nList to {numStr1, numStr2, numStr3, numStr4, numStr5} repeat with i in nList set numTemp to contents of i if numTemp contains aStr then using terms from scripting additions set bNum to offset of aStr in numTemp end using terms from return bNum end if end repeat return false end decodeNumFromNumWithSign |
More from my site
(Visited 81 times, 1 visits today)