Numbersで選択範囲のセルから数字以外の文字を除去するAppleScriptです。
よく、Webブラウザ上で表示中の表データからNumbersなどの表計算ソフトにデータをコピー&ペーストして再利用することがあります。この際に、Webブラウザ上で選択中のDOM構造などを取得できると便利なのですが、いろいろ調べてみてもなかなか方法が見つかりません(自分が設計していたら、絶対に実装してるんですけれども)。
そこで、表データをWebブラウザから表計算ソフト上にコピー後にデータ加工することを考えることになります。
ExcelやNumbers上に表データをペーストして、その後で加工することをよく行います。手動で行うとかったるいので、選択範囲のセルを順次加工するScriptを日常的に作ってはストックしてあります(セル内の改行文字を削除するとか、いろいろ)。
本ScriptはmacOS 10.14.6+Numbers v6.1で検証してあります。
OS標準装備のScript Menuに入れて呼び出して利用しています。
もともと、Numbersのセル書き換え速度はそれほど速くないので、数百セルとか数千セルを一気に書き換えるような用途は考慮していません。そういう用途には、書き換えたデータをCSV書き出しして、CSVのファイルをNumbersでオープンするといった処理になると思います。
AppleScript名:選択範囲のセルから数字以外の文字を除去する |
— Created 2019-08-29 by Takaaki Naganoya — 2019 Piyomaru Software use AppleScript version "2.4" use scripting additions use framework "Foundation" tell application "Numbers" tell front document tell active sheet try set theTable to first table whose class of selection range is range on error return false end try tell theTable set cellList to cell of selection range set mySelectedRanges to value of cell of selection range set res2 to returnNumbersCharOnlyList(mySelectedRanges) of me repeat with i from 1 to (length of cellList) ignoring application responses –Async Mode tell item i of cellList set value to item i of res2 end tell end ignoring end repeat end tell end tell end tell end tell on returnNumbersCharOnlyList(aList) set nList to {} repeat with i in aList set the end of nList to returnNumberCharsOnly(i) of me end repeat return nList end returnNumbersCharOnlyList on returnNumberCharsOnly(aStr) set anNSString to current application’s NSString’s stringWithString:aStr set anNSString to anNSString’s stringByReplacingOccurrencesOfString:"[^0-9]" withString:"" options:(current application’s NSRegularExpressionSearch) range:{0, anNSString’s |length|()} return anNSString as text end returnNumberCharsOnly |
More from my site
(Visited 701 times, 2 visits today)