Numbersの書類上で選択中の範囲のセルの値をシャッフルするAppleScriptです。Numbers書類の表の上で節度ある範囲(テスト用なので…100個ぐらい?)のセルを選択して実行し、シャッフされたデータをNumbersに描き戻します。
# 単なるデモScriptなので、数千とか数万個のセルを選択した場合には、CSVに書き出してNumbersでオープンし、そのデータ内容をコピペで元のNumbersに書き戻したほうが処理が速いことでしょう。
実際にmacOS 12 beta5でどの程度、処理速度が向上したかを確認するために書いてみました。
–> Watch macbookpro10,1_10.14_macminim1_12 demo
上記の画像で左がMacBookPro 10,1(Intel Core i7 2.66GHz、macOS 10.14.6)、右がMacmini9,1(Apple M1 3.2GHz、macOS 12 beta5)です。
これまで使用してきたMacBook Pro Retina 2012と現行のM1 Mac miniの速度差は気になります。macOS 11上ではM1 Mac miniのほうが10倍遅かったわけですが、最新のmacOS 12 beta5ではどうなのか。
きっちり両方とも揃えてスタートできているわけではありませんが、それでもM1のほうが2倍強ほど高速になっていることがわかります。このぐらいだと友人知人におすすめしても恨まれないレベルだと思います。
ただ、お勧めするにしてもmacOS 12の正式版が出てからですね。自分のMac App Storeに出しているアプリも、macOS 12がリリースされる前にUniversal Binary版を出すと「M1対応にしても速くなっていない」などと文句を言われそうです。
逆に、macOS 12の正式版がリリースされたら「Intel版のままなのに信じられないほど速くなった」ということになりそうです。
AppleScript名:セルの値のシャッフル.scptd |
— – Created by: Takaaki Naganoya – Created on: 2021/08/22 — – Copyright © 2021 Piyomaru Software, All Rights Reserved — use AppleScript version "2.7" — High Sierra (10.13) or later use framework "Foundation" use framework "GameplayKit" use scripting additions 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 –何も選択されてなかった場合は終了 end try tell theTable set mySelectedRanges to value of every cell of selection range set cellList to cell of selection range end tell end tell end tell end tell –1D Array Shuffle set anArray to current application’s NSArray’s arrayWithArray:mySelectedRanges set randomArray to anArray’s shuffledArray() as list — requires macOS 10.12 tell application "Numbers" tell front document tell active sheet tell theTable repeat with i from 1 to (length of cellList) tell item i of cellList set value to item i of randomArray end tell end repeat end tell end tell end tell end tell |