アイテム番号の入ったリスト(配列変数)をもとに、ヒットしなかった項目を返すというAppleScriptです。
これは、なにがしかのデータとなにがしかの書類上に配置されたデータの照合を行って、存在が確認されなかったデータの一覧を作成するために作成したものです。
存在確認といえば、たいていは「存在していたデータそのもの、あるいはデータのアイテム番号一覧」といったものを出力するようになっています。そこに、「存在が確認できなかったデータの一覧が欲しい」という要望が出てくることも、だいたいは普通の出来事です。
ただ、この手の「言語化すると大したことはないが、実施に精神的な抵抗感をおぼえる処理」といいいますか、「後片付け的な処理」というのは、書くのが面倒で後回しになりがちなものでもあります。
事実、実際に書いてみたら、、、既存のサブルーチンの組み合わせで作りましたが、1日たって見直してみると何が書いてあるのかよく思い出せないレベルです(既存のサブルーチンの組み合わせが過ぎて、意味がわかりにくいのかも)。
AppleScript名:アイテム番号リストをもとに、ヒットしなかった項目を返す.scptd |
— – Created by: Takaaki Naganoya – Created on: 2019/07/29 — – Copyright © 2019 Piyomaru Software, All Rights Reserved — property NSArray : a reference to current application’s NSArray property NSMutableSet : a reference to current application’s NSMutableSet property NSMutableArray : a reference to current application’s NSMutableArray use AppleScript version "2.4" — Yosemite (10.10) or later use framework "Foundation" use scripting additions set strList to {"Apple", "Book", "Cheeze", "Dictionary", "Escalgo", "Find", "Gorila", "hook", "ink", "jet"} set hitIDList to {1, 2, 3, 4, 6} set bList to getUnpickedContents(hitIDList, strList) of me –> {"Escalgo", "Gorila", "hook", "ink", "jet"} on getUnpickedContents(aList, strList) set aMax to length of strList set bList to getSequentialNumList(aMax) of me set cList to excludeTwoList(bList, aList) of me set anArray to NSMutableArray’s arrayWithArray:(cList) set dList to (anArray’s sortedArrayUsingSelector:"compare:") as list set eList to retConListFromItemNumList(dList, strList) of me return eList end getUnpickedContents –アイテム項目番号が入っているリストをもとに、中身が入っているリストから項目を取り出す on retConListFromItemNumList(dList, strList) set outList to {} repeat with i in dList set aTmp to item (contents of i) of strList set the end of outList to aTmp end repeat return outList end retConListFromItemNumList on excludeTwoList(aList, bList) set aArray to NSArray’s arrayWithArray:(aList) set bArray to NSArray’s arrayWithArray:(bList) set aSet to NSMutableSet’s alloc()’s initWithArray:aArray set bSet to NSMutableSet’s alloc()’s initWithArray:bArray aSet’s minusSet:bSet –補集合 set resList to aSet’s allObjects() as list return resList end excludeTwoList on getSequentialNumList(aMax) set outList to {} repeat with i from 1 to aMax set the end of outList to i end repeat return outList end getSequentialNumList |
More from my site
(Visited 79 times, 1 visits today)