Menu

Skip to content
AppleScriptの穴
  • Home
  • Products
  • Books
  • Docs
  • Events
  • Forum
  • About This Blog
  • License
  • 仕事依頼

AppleScriptの穴

Useful & Practical AppleScript archive. Click '★Click Here to Open This Script' Link to download each AppleScript

sd checker

Posted on 6月 30, 2019 by Takaaki Naganoya

Script Debuggerを操作して、オープン中のScriptのうちのいずれかから、選択してScriptからリンクしているFrameworkやライブラリが指定のScriptバンドル内に存在しているかどうかチェックするAppleScriptです。

AppleScript appletの納品時にライブラリやFrameworkをすべてバンドル内に入れておいたはずなのに、納品先の環境でFrameworkやライブラリが入っていないエラーに直面したことは、実はけっこうあります。とくにFrameworkです。

つまり、バンドルに収めたFrameworkやライブラリがリンクされていれば問題ないものの、~/Library/Frameworksや~/Library/Script Librariesフォルダ内のファイルが指し示されている場合には、他の環境に持って行ったときに実行できません。

その割に、どのFrameworkがバンドル外ファイルにリンクされているのかといったチェックを(Apple純正のスクリプトエディタでは)明示的に行う手段がなく、一時的に開発環境内の当該Frameworkを削除してアプリケーション書き出しして様子を見るといったチェック作業を行っていました。

AppleScriptのバンドル内にFrameworkを突っ込む機能がScript Debugger上に用意されていないため手作業で行っており、たまーに突っ込むフォルダの階層を間違えてしまうんですね(涙)。

自分のことながら、この作業自体がひたすら間抜けだったので、プログラムでチェックだけでも行えるようにしてみたものがこのAppleScriptです。

本Scriptは1つのScriptをそのままチェックするだけのものです。本来は、当該Scriptに含まれるScript Libraryを再帰でオープンしてチェックすべきなんでしょう。

Script Debuggerにこの機能が用意されているということは、メーカーのLate Night Softwareでもいろいろハマったんだと思いますが、メニューなどのGUI要素がついていない理由がよくわかりません。Shaneにはアプリ書き出し時にFrameworkのバンドル内組み込みを行う方向で要望は出しています。現場的には必須の機能です。

AppleScript名:sd checker.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/06/30
—
–  Copyright © 2019 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use scripting additions

tell application "Script Debugger"
  set dList to name of every document
  
set dRes to choose from list dList with prompt "Choose Script to check linked files (framework/script libraries)"
  
if dRes = false then return
  
set dName to contents of item 1 of dRes
  
  
tell document dName
    set myFile to path
    
    
–Framework Check
    
set uList to used framework files
    
set fList to {}
    
repeat with i in uList
      set j to POSIX path of i
      
if (j does not start with myFile) and (j does not start with "/System/Library/Frameworks/") then
        set the end of fList to j
      end if
    end repeat
    
    
–Script Library Check
    
set libList to used script library files
    
set sList to {}
    
repeat with i in sList
      set j to POSIX path of i
      
if j does not start with myFile then
        set the end of sList to POSIX path of i
      end if
    end repeat
    
    
(*
    –Scripting Additions Check (Omitted)
    set sdList to used scripting addition files
    set dList to {}
    repeat with i in dList
      set j to POSIX path of i
      if j does not start with myFile then
        set the end of dList to POSIX path of i
      end if
    end repeat
    *)

  end tell
end tell

set resList to {fList, sList}
set res2List to FlattenList(resList) of me
set res3List to cleanUp1DList(res2List, {""}) of me
if res3List = {} then
  display dialog "Lib/Framework link check OK"
else
  set aLen to length of res3List
  
set tmpStr to retDelimedText(res3List, return) of me
  
display dialog (aLen as string) & " Lib/Framework exists out of the bundle." & return & tmpStr
end if

–次元数上限なしの多次元配列を1次元配列にフラット化 By Paul Berkowitz
on FlattenList(aList)
  set oldDelims to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to {"????"}
  
set aString to aList as text
  
set aList to text items of aString
  
set AppleScript’s text item delimiters to oldDelims
  
return aList
end FlattenList

on cleanUp1DList(aList as list, cleanUpItems as list)
  set bList to {}
  
repeat with i in aList
    set j to contents of i
    
if j is not in cleanUpItems then
      set the end of bList to j
    end if
  end repeat
  
return bList
end cleanUp1DList

on retDelimedText(aList, aDelim)
  set aText to ""
  
set curDelim to AppleScript’s text item delimiters
  
set AppleScript’s text item delimiters to aDelim
  
set aText to aList as text
  
set AppleScript’s text item delimiters to curDelim
  
return aText
end retDelimedText

★Click Here to Open This Script 

More from my site

  • Script Editor, Script Debuggerから選択範囲の情報を取得Script Editor, Script Debuggerから選択範囲の情報を取得
  • Handle diff v2Handle diff v2
  • as anythingas anything
  • 丸つき数字を数値にデコードする v2丸つき数字を数値にデコードする v2
  • common elements Libをロシア語などのクエリーで呼び出すcommon elements Libをロシア語などのクエリーで呼び出す
  • Wikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script LibraryWikipedia経由で2つの単語の共通要素を計算するcommon elements Lib Script Library
(Visited 121 times, 1 visits today)
Posted in File path list | Tagged 10.12savvy 10.13savvy 10.14savvy Script Debugger | 3 Comments

3 thoughts on “<span>sd checker</span>”

  1. 7/4/19
    12:39 AM
    2019年7月4日
    12:39 AM

    Reply

    Manabu Yajima says:

    こんばんは。
    掲載のスクリプトをいつも参考にさせてもらってます。
    分からないことで少し質問があるのですが、Frameworkはバンドルに内包できるのでしょうか?
    できるとすれば、バンドル内にどのような階層でファイルを置き、スクリプトにどのように書けばリンクできるのでしょうか。
    分からず苦戦してます。教えていただけたら幸いです。
    環境:macOS Mojave 10.14.5、純正のスクリプトエディタ

  2. 7/4/19
    9:39 AM
    2019年7月4日
    9:39 AM

    Reply

    Takaaki Naganoya says:

    もしもお手元に拙著「最新事情がわかる AppleScript 10大最新技術」がありましたら、100ページにある図をご参照ください。
    https://piyomarusoft.booth.pm/items/301502

    アプレットのバンドル(と仮定)内にFrameworkのファイルを入れる場合の内包先は、/Contents/Frameworks です。スクリプト内にはフレームワークのパスを明記することはできないので、書き方は変わりません。useコマンドでFramework名称を指定するだけです。

    • 7/4/19
      2:07 PM
      2019年7月4日
      2:07 PM

      Reply

      Manabu Yajima says:

      ありがとうございます。おかげ様で無事内包することができました。
      今後の為にもと、書籍も購入させていただきました。

Leave a Reply to Takaaki Naganoya Cancel reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

電子書籍(PDF)をオンラインストアで販売中!

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • UI Browserがgithub上でソース公開され、オープンソースに
  • macOS 13 TTS Voice環境に変更
  • Xcode 14.2でAppleScript App Templateを復活させる
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 13でNSNotFoundバグふたたび
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • exif
  • file
  • File path
  • filter
  • folder
  • Font
  • Font
  • GAME
  • geolocation
  • GUI
  • GUI Scripting
  • Hex
  • History
  • How To
  • iCloud
  • Icon
  • Image
  • Input Method
  • Internet
  • iOS App
  • JavaScript
  • JSON
  • JXA
  • Keychain
  • Keychain
  • Language
  • Library
  • list
  • Locale
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • PRODUCTS
  • QR Code
  • Raw AppleEvent Code
  • Record
  • rectangle
  • recursive call
  • regexp
  • Release
  • Remote Control
  • Require Control-Command-R to run
  • REST API
  • Review
  • RTF
  • Sandbox
  • Screen Saver
  • Script Libraries
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2023年9月
  • 2023年8月
  • 2023年7月
  • 2023年6月
  • 2023年5月
  • 2023年4月
  • 2023年3月
  • 2023年2月
  • 2023年1月
  • 2022年12月
  • 2022年11月
  • 2022年10月
  • 2022年9月
  • 2022年8月
  • 2022年7月
  • 2022年6月
  • 2022年5月
  • 2022年4月
  • 2022年3月
  • 2022年2月
  • 2022年1月
  • 2021年12月
  • 2021年11月
  • 2021年10月
  • 2021年9月
  • 2021年8月
  • 2021年7月
  • 2021年6月
  • 2021年5月
  • 2021年4月
  • 2021年3月
  • 2021年2月
  • 2021年1月
  • 2020年12月
  • 2020年11月
  • 2020年10月
  • 2020年9月
  • 2020年8月
  • 2020年7月
  • 2020年6月
  • 2020年5月
  • 2020年4月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年12月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年7月
  • 2018年6月
  • 2018年5月
  • 2018年4月
  • 2018年3月
  • 2018年2月

https://piyomarusoft.booth.pm/items/301502

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org

Forum Posts

  • 人気のトピック
  • 返信がないトピック

メタ情報

  • ログイン
  • 投稿フィード
  • コメントフィード
  • WordPress.org
Proudly powered by WordPress
Theme: Flint by Star Verte LLC