数値に対して「何桁分のゼロパディングを行うか」を選択するダイアログを表示するAppleScriptです。
数値に対して任意の桁数のゼロパディング(9–> 0009)を行うときに、桁数と実際にゼロパディングしたサンプルを生成してchoose from listによるダイアログで選択するようにしてみました。
本来であれば、ゼロパディングの桁数だけ文字入力させたり一覧から選択させるだけでよいのですが、よりわかりやすいように処理サンプルを同時に表示させています。また、サンプルは任意の範囲で乱数を表示させることで「それっぽい」「本物っぽい」雰囲気を醸し出すようにしてみました。
気分の問題なので、実用性とかそういうものを追求したものではありません。
最近は、AppleScriptもマシンの速度向上やCocoa Frameworkを利用することで高速処理が行えるようになり、何らかの処理を選択する際に「結果ごと表示して選択」するような処理を書くことが増えてきました。さすがに処理に数分かかるような処理ではそんな真似はできませんが、高速に処理できたぶんだけ使い勝手を考慮するとよいだろうかというところです。
AppleScript名:ゼロパディングのサンプルを生成.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/10/18 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions property NSMutableArray : a reference to current application’s NSMutableArray set aList to makeSampleList(1, 8) of me set aRes to choose from list aList with prompt "Digit Samples" with title "Zero padding digits" default items first item of aList without empty selection allowed if aRes = false then return false set dRes to contents of first item of aRes set nRes to search1DList(aList, dRes) of me on makeSampleList(aMin as integer, aMax as integer) set sampleList to {} set aSampleMaxDigit to length of (characters of (aMax as string)) repeat with i from aMin to aMax set aSample to makeFN(i, aSampleMaxDigit + 1) of me set aRand to random number from (10 ^ aMin) to (10 ^ (i – 2) – 1) set aTmpStr to makeFN(aRand, i) of me set bSample to aSample & " Sample: " & aTmpStr set the end of sampleList to bSample end repeat return sampleList end makeSampleList on makeFN(aNum as integer, aDigit as integer) set aText to "00000000000" & (aNum as text) set aLen to length of aText set aRes to text (aLen – aDigit + 1) thru -1 of aText return aRes end makeFN on search1DList(aList, aTarg) set anArray to NSMutableArray’s arrayWithArray:aList set anIndex to anArray’s indexOfObject:aTarg if (anIndex = current application’s NSNotFound) or (anIndex > 9.99999999E+8) then –macOS 10.12.x—10.13.0はNSNotFoundの定義値が間違っているので対処 return false end if return (anIndex as integer) + 1 –convert index base (0 based to 1 based) end search1DList |
More from my site
(Visited 139 times, 2 visits today)