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

カテゴリー: URL

指定PDFの全ページからリンクアノテーションのURLを取得(applescript) v2

Posted on 2月 14, 2018 by Takaaki Naganoya

指定のPDFの全ページを走査してリンクアノテーションのURLのうちURL Schemeが”applescript”のものを抽出して、Link Scriptの内容を取得するAppleScriptです。

macOS 10.13以降でも動作するようにしてあります。

AppleScript名:指定PDFの全ページからリンクアノテーションのURLを取得(applescript) v2
— Created 2017-06-08 by Takaaki Naganoya
— Modified 2018-02-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"
use framework "Quartz"

property |NSURL| : a reference to current application’s |NSURL|
property NSString : a reference to current application’s NSString
property PDFDocument : a reference to current application’s PDFDocument
property NSMutableDictionary : a reference to current application’s NSMutableDictionary
property NSUTF8StringEncoding : a reference to current application’s NSUTF8StringEncoding

set aPOSIX to POSIX path of (choose file of type {"com.adobe.pdf"} with prompt "Choose a PDF with Annotation")
set linkList to getLinkURLFromPDF(aPOSIX, "applescript") of me
–>  {​​​​​{​​​​​​​pageNum:95, ​​​​​​​linkScript:"set aStr to \"ぴよまるソフトウェア\" set aPath to choose file name……}}

on getLinkURLFromPDF(aPOSIX, urlScheme)
  set v2 to system attribute "sys2" –> macOS 10.12 =12
  
  
set aURL to (|NSURL|’s fileURLWithPath:aPOSIX)
  
  
set aPDFdoc to PDFDocument’s alloc()’s initWithURL:aURL
  
set pCount to aPDFdoc’s pageCount()
  
  
set outList to {}
  
  
–PDFのページでループ
  
repeat with ii from 0 to (pCount – 1)
    set tmpPage to (aPDFdoc’s pageAtIndex:ii)
    
    
set anoList to (tmpPage’s annotations()) as list
    
if anoList is not equal to {missing value} then –指定PDF中にAnotationが存在した
      
      
–対象PDFPage内で検出されたAnnotationでループ
      
repeat with i in anoList
        
        
if v2 < 13 then
          –to macOS Sierra
          
set aType to (i’s type()) as string
        else
          –macOS High Sierra or later
          
set aType to (i’s |Type|()) as string
        end if
        
        
—
        
if aType = "Link" then
          set tmpURL to i’s |URL|()
          
if tmpURL is not equal to missing value then
            set tmpScheme to (tmpURL’s |scheme|()) as string
            
            
if tmpScheme = urlScheme then
              set urlStr to (tmpURL’s absoluteString()) as string
              
set urlRec to parseQueryDictFromURLString(urlStr) of me
              
set tmpScript to (urlRec’s |script|) as string
              
              
set the end of outList to {pageNum:(ii + 1), linkScript:tmpScript}
              
            end if
          end if
        end if
      end repeat
    end if
  end repeat
  
  
return outList
end getLinkURLFromPDF

on parseQueryDictFromURLString(aURLStr as string)
  if aURLStr = "" then error "No URL String"
  
  
set aURL to |NSURL|’s URLWithString:aURLStr
  
set aQuery to aURL’s query() –Get Query string part from URL
  
if aQuery’s |length|() = 0 then return false
  
  
set aDict to NSMutableDictionary’s alloc()’s init()
  
set aParamList to (aQuery’s componentsSeparatedByString:"&") as list
  
  
repeat with i in aParamList
    set j to contents of i
    
if length of j > 0 then
      set tmpStr to (NSString’s stringWithString:j)
      
set eList to (tmpStr’s componentsSeparatedByString:"=")
      
set anElement to (eList’s firstObject()’s stringByReplacingPercentEscapesUsingEncoding:(NSUTF8StringEncoding))
      
set aValStr to (eList’s lastObject()’s stringByReplacingPercentEscapesUsingEncoding:(NSUTF8StringEncoding))
      (
aDict’s setObject:aValStr forKey:anElement)
    end if
  end repeat
  
  
return aDict
end parseQueryDictFromURLString

★Click Here to Open This Script 

Posted in PDF URL | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

指定ファイルのUTIを取得

Posted on 2月 13, 2018 by Takaaki Naganoya
AppleScript名:Vanilla Scriptで指定ファイルのUTIを求める
set aFile to choose file

tell application "System Events"
  set aUTI to type identifier of aFile
  
return aUTI
end tell

★Click Here to Open This Script 

AppleScript名:指定ファイルのUTIを取得
— Created 2016-10-24 by Takaaki Naganoya
— Modified 2016-10-25 by Shane Stanley
— 2016 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use BridgePlus : script "BridgePlus" –https://www.macosxautomation.com/applescript/apps/BridgePlus.html

set aFile to POSIX path of (choose file)
set aUTI to retFileFormatUTIFromPath(aFile) of me

on retFileFormatUTIFromPath(aPOSIXpath as string)
  load framework
  
set aPath to current application’s NSString’s stringWithString:aPOSIXpath
  
set aExt to (aPath’s pathExtension()) as string
  
return (current application’s SMSForder’s UTIForExtension:aExt) as list of string or string –as anything
end retFileFormatUTIFromPath

★Click Here to Open This Script 

AppleScript名:指定ファイルのUTIを取得 v2.scptd
use AppleScript version "2.5" — El Capitan (10.11) or later
use framework "Foundation"
use scripting additions

property |NSURL| : a reference to current application’s |NSURL|
property NSURLTypeIdentifierKey : a reference to current application’s NSURLTypeIdentifierKey

set aPath to POSIX path of (choose file)
set utiRes to retUTIfromPath(aPath) of me

on retUTIfromPath(aPOSIXPath)
  set aURL to |NSURL|’s fileURLWithPath:aPOSIXPath
  
set {theResult, theValue} to aURL’s getResourceValue:(reference) forKey:NSURLTypeIdentifierKey |error|:(missing value)
  
  
if theResult = true then
    return theValue as string
  else
    return theResult
  end if
end retUTIfromPath

★Click Here to Open This Script 

Posted in file System URL UTI | Tagged 10.11savvy 10.12savvy 10.13savvy NSURL NSURLTypeIdentifierKey | Leave a comment

指定のアプリケーションのURL Schemeを取得する

Posted on 2月 6, 2018 by Takaaki Naganoya
AppleScript名:指定のアプリケーションのURL Schemeを取得する
— Created 2017-07-23 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use BridgePlus : script "BridgePlus"
–http://piyocast.com/as/archives/4759

load framework

set aP to choose file
set aURLrec to getAppURLSchemes(aP) of me
–> {appName:"Photos", appBundleID:"com.apple.Photos", urlScheme:{"photos"}}

on getAppURLSchemes(aP)
  set aURL to current application’s |NSURL|’s fileURLWithPath:(POSIX path of aP)
  
set aBundle to current application’s NSBundle’s bundleWithURL:aURL
  
set aDict to aBundle’s infoDictionary()
  
  
set appNameDat to (aDict’s valueForKey:"CFBundleName") as string
  
set bundleIDat to (aDict’s valueForKey:"CFBundleIdentifier") as string
  
  
set urlSchemes to (aDict’s valueForKey:"CFBundleURLTypes")
  
if urlSchemes is not equal to missing value then
    set urlList to urlSchemes’s valueForKey:"CFBundleURLSchemes"
    
set urlListFlat to (current application’s SMSForder’s arrayByFlattening:urlList) as list
  else
    set urlListFlat to {}
  end if
  
  
set aRec to {appName:appNameDat, appBundleID:bundleIDat, urlScheme:urlListFlat}
  
return aRec
end getAppURLSchemes

★Click Here to Open This Script 

Posted in System URL | Tagged 10.11savvy 10.12savvy 10.13savvy | 1 Comment

文字列のURLエンコード、URLデコード

Posted on 2月 6, 2018 by Takaaki Naganoya
AppleScript名:文字列のURLエンコード、URLデコード
— Created 2017-09-19 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aStr to "あいうえお"

set bStr to encodeURLencoding(aStr) of me
–>  "%E3%81%82%E3%81%84%E3%81%86%E3%81%88%E3%81%8A"

set cStr to decodeURLencoding(bStr) of me
–>  "あいうえお"

on encodeURLencoding(origStr as string)
  set aStr to current application’s NSString’s stringWithString:origStr
  
set encodedStr to aStr’s stringByAddingPercentEscapesUsingEncoding:(current application’s NSUTF8StringEncoding)
  
return encodedStr as string
end encodeURLencoding

on decodeURLencoding(encodedStr)
  set aStr to current application’s NSString’s stringWithString:encodedStr
  
set bStr to aStr’s stringByReplacingPercentEscapesUsingEncoding:(current application’s NSUTF8StringEncoding)
  
return bStr as string
end decodeURLencoding

★Click Here to Open This Script 

Posted in URL | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Maps.appで開始地点と到着地点の住所を指定して経路表示 v3

Posted on 2月 6, 2018 by Takaaki Naganoya
AppleScript名:Maps.appで開始地点と到着地点の住所を指定して経路表示 v3
— Created 2017-01-17 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aURL to "http://maps.apple.com/"
set aRec to {saddr:"中村橋駅", daddr:"よみうりホール"} –経路表示
set bURL to retURLwithParams(aURL as string, aRec as record)
open location bURL

on retURLwithParams(aBaseURL as string, aRec as record)
  set aDic to current application’s NSMutableDictionary’s dictionaryWithDictionary:aRec
  
  
set aKeyList to (aDic’s allKeys()) as list
  
set aValList to (aDic’s allValues()) as list
  
set aLen to length of aKeyList
  
set bLen to length of aValList
  
if aLen is not equal to bLen then return false
  
  
set qList to {}
  
repeat with i from 1 to aLen
    set aName to (contents of item i of aKeyList) as string
    
set aVal to (contents of item i of aValList) as string
    
set the end of qList to (current application’s NSURLQueryItem’s queryItemWithName:aName value:aVal)
  end repeat
  
  
set aComp to current application’s NSURLComponents’s alloc()’s initWithString:aBaseURL
  
aComp’s setQueryItems:qList
  
set aURL to (aComp’s |URL|()’s absoluteString()) as text
  
  
return aURL
end retURLwithParams

★Click Here to Open This Script 

com.apple.Maps

Posted in geolocation URL | Tagged 10.11savvy 10.12savvy 10.13savvy Maps | Leave a comment

Maps.appで住所検索表示 v4

Posted on 2月 6, 2018 by Takaaki Naganoya
AppleScript名:Map.appで住所検索表示 v4
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aBaseURL to "http://maps.apple.com/"

set aParam to "東京都港区六本木6丁目10番1号" –Apple Japanの住所
set aRec to {q:aParam}
set cURL to retURLwithParams(aBaseURL, aRec) of me

tell application "Maps"
  open location cURL
end tell

on retURLwithParams(aBaseURL as string, aRec as record)
  set aDic to current application’s NSMutableDictionary’s dictionaryWithDictionary:aRec
  
  
set aKeyList to (aDic’s allKeys()) as list
  
set aValList to (aDic’s allValues()) as list
  
set aLen to length of aKeyList
  
set bLen to length of aValList
  
if aLen is not equal to bLen then return false
  
  
set qList to {}
  
repeat with i from 1 to aLen
    set aName to (contents of item i of aKeyList) as string
    
set aVal to (contents of item i of aValList) as string
    
set the end of qList to (current application’s NSURLQueryItem’s queryItemWithName:aName value:aVal)
  end repeat
  
  
set aComp to current application’s NSURLComponents’s alloc()’s initWithString:aBaseURL
  
aComp’s setQueryItems:qList
  
set aURL to (aComp’s |URL|()’s absoluteString()) as text
  
  
return aURL
end retURLwithParams

★Click Here to Open This Script 

com.apple.Maps

Posted in geolocation URL | Tagged 10.11savvy 10.12savvy 10.13savvy Maps | Leave a comment

SafariでURLをローディング

Posted on 2月 6, 2018 by Takaaki Naganoya

本処理は最近のSafariでは正しくローディング検出できないようになってきたため、書き直したルーチン「SafariでURLローディング完了検出」を利用してください。

AppleScript名:SafariでURLをローディング
set aURL to "http://www.piyocast.com/as/"
–set aURL to ""

tell application "Safari"
  set d to count every window
  
if d = 0 then
    make new window
    
tell document 1
      set URL to aURL
    end tell
  else
    if aURL is not equal to "" then
      tell document 1
        set URL to aURL
      end tell
    end if
  end if
  
  
page_loaded(10) of me
  
  
set a to do JavaScript "document.title" in document 1
end tell

on page_loaded(timeout_value)
  repeat with i from 1 to (timeout_value * 10)
    tell application "Safari"
      if (do JavaScript "document.readyState" in document 1) is "complete" then
        return true
      else if i is the timeout_value then
        return false
      else
        delay 0.1
      end if
    end tell
  end repeat
  
return false
end page_loaded

★Click Here to Open This Script 

Posted in JavaScript URL | Tagged 10.11savvy 10.12savvy 10.13savvy Safari | 2 Comments

Post navigation

  • Newer posts

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

Google Search

Popular posts

  • macOS 26, Tahoe
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • Script Debuggerがフリーダウンロードで提供されることに
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Numbersで選択範囲のdateの年を+1する
  • Appleに買収されたPixelmator ProがAppleとしての初アップデート
  • Dock Menu
  • Applicationのactivateを記録する v2
  • シンプルな文字置換
  • Claris FileMaker Pro 2025(v22)がリリースされた
  • macOS 15.5beta5(24F74)でaliasのキャスティングバグが修正された???
  • Apple Creator Studioに含まれるKeynote/Pages/Numbersは新バージョン?
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • macOS(Mac OS X/OS X)上のAppleScriptの歴史
  • 画像をAppleScriptでアスキーアート化
  • NaturalLanguage.frameworkを用いて日本語テキストの形態素解析を行う
  • デフォルトタイトルと重なっているものと指定サイズのものを抽出
  • Adobe InDesignのAppleScript実行エンジンがCarbonからCocoaベースに書き換えられる

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (439) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (172) 26.0savvy (47) CotEditor (68) Finder (53) Keynote (122) NSAlert (61) NSArray (51) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (53) NSDictionary (28) NSFileManager (23) NSFont (21) NSImage (41) NSJSONSerialization (21) NSMutableArray (63) NSMutableDictionary (22) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (119) NSURL (98) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (80) Pages (58) Safari (45) Script Editor (27) WKUserContentController (21) WKUserScript (20) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • Beginner
  • Benchmark
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • check sum
  • Clipboard
  • Cocoa-AppleScript Applet
  • Code Sign
  • Color
  • Custom Class
  • date
  • dialog
  • diff
  • drive
  • Droplet
  • 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
  • Localize
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Newt On Project
  • NFC
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • parallel processing
  • PDF
  • Peripheral
  • process
  • 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
  • Scripting Additions
  • sdef
  • search
  • Security
  • selection
  • shell script
  • Shortcuts Workflow
  • Sort
  • Sound
  • Spellchecker
  • Spotlight
  • SVG
  • Swift
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 2026年3月
  • 2026年2月
  • 2026年1月
  • 2025年12月
  • 2025年11月
  • 2025年10月
  • 2025年9月
  • 2025年8月
  • 2025年7月
  • 2025年6月
  • 2025年5月
  • 2025年4月
  • 2025年3月
  • 2025年2月
  • 2025年1月
  • 2024年12月
  • 2024年11月
  • 2024年10月
  • 2024年9月
  • 2024年8月
  • 2024年7月
  • 2024年6月
  • 2024年5月
  • 2024年4月
  • 2024年3月
  • 2024年2月
  • 2024年1月
  • 2023年12月
  • 2023年11月
  • 2023年10月
  • 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