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

NSProcessInfoでプロセスの各種情報を取得

Posted on 2月 18, 2018 by Takaaki Naganoya
AppleScript名:NSProcessInfoでプロセスの各種情報を取得
— Created 2018-02-15 by Takaaki Naganoya
— 2018 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set aInfo to current application’s NSProcessInfo’s processInfo()’s processorCount()
–>  8

set aInfo to current application’s NSProcessInfo’s processInfo()’s activeProcessorCount()
–>  8

set aInfo to current application’s NSProcessInfo’s processInfo()’s physicalMemory()
–>  8.589934592E+9

set aInfo to current application’s NSProcessInfo’s processInfo()’s systemUptime()
–>  3.55849418142903E+5

set aInfo to (current application’s NSProcessInfo’s processInfo()’s hostName()) as string
–>  "mbpretina.local"

set aInfo to (current application’s NSProcessInfo’s processInfo()’s operatingSystemVersionString()) as string
–>  "バージョン10.12.6(ビルド16G1309)"

set vInfo to current application’s NSProcessInfo’s processInfo()’s operatingSystemVersion()
–>  {​​​​​majorVersion:10, ​​​​​minorVersion:12, ​​​​​patchVersion:6​​​}

set aInfo to current application’s NSProcessInfo’s processInfo()’s isOperatingSystemAtLeastVersion:vInfo
–>  true

set aInfo to (current application’s NSProcessInfo’s processInfo()’s thermalState())
–>  1

–0: NSProcessInfoThermalStateCritical
–1: NSProcessInfoThermalStateFair
–2: NSProcessInfoThermalStateNominal
–3: NSProcessInfoThermalStateSerious

★Click Here to Open This Script 

Posted in System | Tagged 10.11savvy 10.12savvy 10.13savvy | 2 Comments

デスクトップ・スクリーンセーバー

Posted on 2月 17, 2018 by Takaaki Naganoya

ステータスバーアイテムを作成してメニューバー上にメニューを出し、デスクトップ・スクリーンセーバーのコントロールを行うAppleScriptです。

ステータスバーアイテムを使って、簡単なメニュー操作を行うAppleScriptの試作品です。メニュー操作の方がメインで、デスクトップ・スクリーンセーバーの方はオマケです。

–> DEMO Movie

AppleScript名:デスクトップ・スクリーンセーバー
— Created 2017-03-03 by Takaaki Naganoya
— Modified 2018-02-15 by Shane Stanley–Thanks!!
— Modified 2018-02-15 by Takaaki Naganoya
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property aStatusItem : missing value

on run
  init() of me
end run

on init()
  set aList to {"Desktop ScreenSaver", "", "Stop", "", "Quit"}
  
  
set aStatusItem to current application’s NSStatusBar’s systemStatusBar()’s statusItemWithLength:(current application’s NSVariableStatusItemLength)
  
  
aStatusItem’s setTitle:"💻"
  
aStatusItem’s setHighlightMode:true
  
aStatusItem’s setMenu:(createMenu(aList) of me)
  
end init

on createMenu(aList)
  set aMenu to current application’s NSMenu’s alloc()’s init()
  
set aCount to 10
  
  
set prevMenuItem to ""
  
  
repeat with i in aList
    set j to contents of i
    
set aClass to (class of j) as string
    
    
if j is equal to "" then
      set aMenuItem to (current application’s NSMenuItem’s separatorItem())
      (
aMenu’s addItem:aMenuItem)
    else
      if (aClass = "text") or (aClass = "string") then
        
        
if j = "Quit" then
          set aMenuItem to (current application’s NSMenuItem’s alloc()’s initWithTitle:j action:"actionHandler:" keyEquivalent:"")
        else
          set aMenuItem to (current application’s NSMenuItem’s alloc()’s initWithTitle:j action:"actionHandler:" keyEquivalent:"")
        end if
        
        (
aMenuItem’s setTag:aCount)
        (
aMenuItem’s setTarget:me)
        (
aMenu’s addItem:aMenuItem)
        
        
set aCount to aCount + 10
        
copy aMenuItem to prevMenuItem
        
        
      else if aClass = "list" then
        –Generate Submenu
        
set subMenu to current application’s NSMenu’s new()
        (
aMenuItem’s setSubmenu:subMenu)
        
        
set subCounter to 1
        
        
repeat with ii in j
          set jj to contents of ii
          
          
set subMenuItem1 to (current application’s NSMenuItem’s alloc()’s initWithTitle:jj action:"actionHandler:" keyEquivalent:"")
          (
subMenuItem1’s setTarget:me)
          (
subMenuItem1’s setTag:(aCount + subCounter))
          (
subMenu’s addItem:subMenuItem1)
          
          
set subCounter to subCounter + 1
        end repeat
        
      end if
      
    end if
    
  end repeat
  
  
return aMenu
end createMenu

on actionHandler:sender
  set aTag to tag of sender as string
  
set aTitle to title of sender as string
  
  
if aTitle is equal to "Quit" then
    current application’s NSStatusBar’s systemStatusBar()’s removeStatusItem:aStatusItem
    
–tell me to quit
  else
    if aTag = "10" then
      do shell script "/System/Library/Frameworks/ScreenSaver.framework/Resources/ScreenSaverEngine.app/Contents/MacOS/ScreenSaverEngine -background > /dev/null 2>&1 &"
      
    else if aTag = "20" then
      killScreenSaver() of me
      
set curMode to missing value
    end if
  end if
end actionHandler:

on killScreenSaver()
  set shellText to "killall ScreenSaverEngine"
  
do shell script shellText
end killScreenSaver

★Click Here to Open This Script 

Posted in GUI Screen Saver System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

soundIO Libで現在のサウンド入出力デバイス名を取得

Posted on 2月 17, 2018 by Takaaki Naganoya

現在設定されているサウンド入出力デバイス名を取得するAppleScriptです。

–> soundIO Lib

AppleScript名:soundIO Libで現在のサウンド入出力デバイス名を取得
use AppleScript version "2.4"
use scripting additions
use soundIO : script "soundIO Lib" version "1.2" without importing

set i2 to soundIO’s getCurrentAudioInuptDevice()
set o2 to soundIO’s getCurrentAudioOutuptDevice()

return {i2, o2}
–> {"Built-in Microphone", "Built-in Output"}

★Click Here to Open This Script 

Posted in Sound System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

soundIO Libでサウンド入出力を変更 v2.0

Posted on 2月 17, 2018 by Takaaki Naganoya

サウンドの入出力デバイスを任意のデバイスに変更するAppleScriptです。

–> soundIO Lib (To ~/Library/Script Libraries)

AppleScript名:soundIO Libでサウンド入出力を変更 v2.0
— Created 2016-10-07 by Takaaki Naganoya
— 2016 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use soundIO : script "soundIO Lib" version "1.2" without importing

set outList to soundIO’s getEveryAudioOutputDevice()
set targOutputDevice to contents of first item of (choose from list outList with prompt "Select Sound Output Device")

set inList to soundIO’s getEveryAudioInputDevice()
set targIntputDevice to contents of first item of (choose from list inList with prompt "Select Sound Intput Device")

–入出力デバイスを設定
set i1 to soundIO’s setAudioInuptDevice(targIntputDevice)
set o1 to soundIO’s setAudioOutuptDevice(targOutputDevice)

set aRes to ({i1, o1} = {true, true})
return aRes

★Click Here to Open This Script 

Posted in Sound System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

soundIO Libでサウンド入出力を標準デバイスに設定

Posted on 2月 17, 2018 by Takaaki Naganoya

サウンドの入出力デバイスを標準デバイスに変更するAppleScriptです。

ただし、Mac miniではデフォルトのオーディオ入力デバイスが存在していないため、エラーになります。

–> soundIO Lib

AppleScript名:soundIO Libでサウンド入出力を標準デバイスに設定
use AppleScript version "2.4"
use scripting additions
use soundIO : script "soundIO Lib" version "1.2" without importing

set targOutputDevice to "Built-in Output"
set targIntputDevice to "Built-in Microphone" –Mac mini does not have default sound input device

–出力デバイス一覧に設定対象が入っているかチェック
set aList to soundIO’s getEveryAudioOutputDevice()
if targOutputDevice is not in aList then return {false, "Target output device seems to not present"}

–入力デバイス一覧に設定対象が入っているかチェック
set bList to soundIO’s getEveryAudioInputDevice()
if targIntputDevice is not in bList then return {false, "Target input device seems to not present"}

–入出力デバイスを設定
set i1 to soundIO’s setAudioInuptDevice(targIntputDevice)
set o1 to soundIO’s setAudioOutuptDevice(targOutputDevice)

–サウンド入出力デバイスの変更確認
set i2 to soundIO’s getCurrentAudioInuptDevice()
set o2 to soundIO’s getCurrentAudioOutuptDevice()

set aRes to ({i1, o1} = {true, true}) and ({i2, o2} = {targIntputDevice, targOutputDevice})

return aRes

★Click Here to Open This Script 

Posted in Sound System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

soundIO Libでサウンド入出力をSoundFlowerに設定

Posted on 2月 17, 2018 by Takaaki Naganoya

サウンドの入出力デバイスをSoundFolwerに変更するAppleScriptです。

SoundFlowerをインストールしていない環境ではエラーになります。

–> soundIO Lib

AppleScript名:soundIO Libでサウンド入出力をSoundFlowerに設定
use AppleScript version "2.4"
use scripting additions
use soundIO : script "soundIO Lib" version "1.2" without importing

set targDevice to "Soundflower (2ch)"

set aList to soundIO’s getEveryAudioOutputDevice()
if targDevice is not in aList then return false

set bList to soundIO’s getEveryAudioInputDevice()
if targDevice is not in bList then return false

set i1 to soundIO’s setAudioInuptDevice(targDevice)
set o1 to soundIO’s setAudioOutuptDevice(targDevice)

set i2 to soundIO’s getCurrentAudioInuptDevice()
set o2 to soundIO’s getCurrentAudioOutuptDevice()

set aRes to (i1 = true and o1 = true) and (i2 = targDevice and o2 = targDevice)
return aRes

★Click Here to Open This Script 

Posted in Sound System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

soundIO Libでサウンド入出力デバイス名一覧を取得

Posted on 2月 17, 2018 by Takaaki Naganoya

サウンドの入出力デバイス名の一覧を取得するAppleScriptです。

サウンドの入出力先を取得したり変更するのにシステム環境設定をGUI Scripting経由で操作している例をよく見かけますが、あまり上品なやり方ではないのでこのようなライブラリを利用することをお勧めします。

–> soundIO Lib

use soundIO : script “soundIO Lib” version “1.2” without importing

と、useコマンドでAppleScript Librariesを読み込む際に、オプションで「without importing」を指定しています。

これは、デフォルトの状態ではライブラリ本体の書き換えがすぐに反映されなかった(キャッシュされていた)ことに対処したものです。それほど頻繁にライブラリ側の書き換えを行わなければ、指定する必要はないでしょう。

AppleScript名:soundIO Libでサウンド入出力デバイス名一覧を取得
use AppleScript version "2.4"
use scripting additions
use soundIO : script "soundIO Lib" version "1.2" without importing

set outList to soundIO’s getEveryAudioOutputDevice()
–> {"Built-in Output", "Mobiola Headphone", "Mobiola Microphone", "Soundflower (2ch)", "Soundflower (64ch)"}

set inList to soundIO’s getEveryAudioInputDevice()
–> {"Built-in Microphone", "Mobiola Headphone", "Mobiola Microphone", "Soundflower (2ch)", "Soundflower (64ch)"}

★Click Here to Open This Script 

Posted in Sound System | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

mpSoundEngineで電話の呼び出し音のような音

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用して電話の呼び出し音のような音を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineで電話の呼び出し音のような音
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine

property engine : missing value

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()
–https://pages.mtu.edu/~suits/notefreqs.html
set soundList to {440.0, 466.16}

repeat 10 times
  repeat with i in soundList
    makeSound(i) of me
  end repeat
end repeat

engine’s |stop|()

on makeSound(aHz)
  engine’s channel()’s setFrequency:aHz
  
engine’s start()
  
delay 0.05
  
–engine’s |stop|()
end makeSound

★Click Here to Open This Script 

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

mpSoundEngineで音階発生(Stereo)

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用してステレオで(左右のチャンネルで別々の)音階の音を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineで音階発生(Stereo)
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine

property engine : missing value

set engine to current application’s MPStereoSoundEngine’s alloc()’s init()
–https://pages.mtu.edu/~suits/notefreqs.html
set soundList to {261.63, 293.66, 329.63, 349.23, 392.0, 440.0, 493.88, 523.25}
set aLen to length of soundList

repeat with i from 1 to aLen
  makeStereoSound(item i of soundList, item (aLen – i + 1) of soundList) of me
end repeat

engine’s |stop|()

on makeStereoSound(aHz, bHz)
  engine’s leftChannel()’s setFrequency:aHz
  
engine’s rightChannel()’s setFrequency:bHz
  
engine’s start()
  
delay 0.5
end makeStereoSound

★Click Here to Open This Script 

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

mpSoundEngineで音階を出す

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用して音階の音を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineで音階を出す
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine
–http://piyocast.com/as/archives/5030

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()
–https://pages.mtu.edu/~suits/notefreqs.html
set soundList to {261.63, 293.66, 329.63, 349.23, 392.0, 440.0, 493.88, 523.25}

engine’s start()

repeat with i in soundList
  (engine’s channel()’s setFrequency:i)
  
delay 0.1
end repeat

engine’s |stop|()

★Click Here to Open This Script 

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

mpSoundEngineでループ音声発生(サイレン2)

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用してループでサイレンのような音声を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineでループ音声発生(サイレン2)
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine
–http://piyocast.com/as/archives/5030

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()
engine’s start()
repeat with i from 1000 to 100 by -20
  (engine’s channel()’s setFrequency:i)
  
delay 0.01
end repeat

engine’s |stop|()

★Click Here to Open This Script 

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

mpSoundEngineでループ音声発生(サイレン1)

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用してループでサイレンのような音声を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineでループ音声発生(サイレン1)
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine
–http://piyocast.com/as/archives/5030

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()
engine’s start()

repeat with i from 100 to 1000 by 20
  repeat with ii from i to 1000 by 20
    (engine’s channel()’s setFrequency:ii)
    
delay 0.005
  end repeat
end repeat

engine’s |stop|()

★Click Here to Open This Script 

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

mpSoundEngineでランダム音発生(昔のSFでコンピュータが演算している風の音)

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用して、ランダムに音(昔のSFでコンピュータが演算している風の音)を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineでランダム音発生(昔のSFでコンピュータが演算している風の音)
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()

engine’s start()

repeat 100 times
  set aNum to random number from 50 to 4000
  (
engine’s channel()’s setFrequency:aNum)
  
delay 0.02
end repeat

engine’s |stop|()

★Click Here to Open This Script 

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

mpSoundEngineでA=440Hzのモノラルの音を出す

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用して、440Hzの音を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineでA=440Hzのモノラルの音を出す
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine
–http://piyocast.com/as/archives/5030

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()
engine’s channel()’s setFrequency:440.0
engine’s start()
delay 3
engine’s |stop|()

★Click Here to Open This Script 

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

mpSoundEngineで8 octave分の音階発生

Posted on 2月 17, 2018 by Takaaki Naganoya

外部フレームワーク(mpSoundEngine)を利用して、8オクターブ分の音を鳴らすAppleScriptです。

–> mpSoundKit.framework

AppleScript名:mpSoundEngineで8 octave分の音階発生
— Created 2017-12-14 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine

property engine : missing value

–https://pages.mtu.edu/~suits/notefreqs.html
set soundList to {16.35, 17.32, 18.35, 19.45, 20.6, 21.83, 23.12, 24.5, 25.96, 27.5, 29.14, 30.87, 32.7, 34.65, 36.71, 38.89, 41.2, 43.65, 46.25, 49.0, 51.91, 55.0, 58.27, 61.74, 65.41, 69.3, 73.42, 77.78, 82.41, 87.31, 92.5, 98.0, 103.83, 110.0, 116.54, 123.47, 130.81, 138.59, 146.83, 155.56, 164.81, 174.61, 185.0, 196.0, 207.65, 220.0, 233.08, 246.94, 261.63, 277.18, 293.66, 311.13, 329.63, 349.23, 369.99, 392.0, 415.3, 440.0, 466.16, 493.88, 523.25, 554.37, 587.33, 622.25, 659.25, 698.46, 739.99, 783.99, 830.61, 880.0, 932.33, 987.77, 1046.5, 1108.73, 1174.66, 1244.51, 1318.51, 1396.91, 1479.98, 1567.98, 1661.22, 1760.0, 1864.66, 1975.53, 2093.0, 2217.46, 2349.32, 2489.02, 2637.02, 2793.83, 2959.96, 3135.96, 3322.44, 3520.0, 3729.31, 3951.07, 4186.01, 4434.92, 4698.63, 4978.03, 5274.04, 5587.65, 5919.91, 6271.93, 6644.88, 7040.0, 7458.62, 7902.13}

set revList to reverse of soundList

set engine to current application’s MPMonoSoundEngine’s alloc()’s init()

engine’s start()

repeat with i in soundList
  (engine’s channel()’s setFrequency:i)
  
delay 0.01
end repeat

repeat with i in revList
  (engine’s channel()’s setFrequency:i)
  
delay 0.01
end repeat

engine’s |stop|()

★Click Here to Open This Script 

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

ip-apiでIPアドレスから場所を検索

Posted on 2月 16, 2018 by Takaaki Naganoya
AppleScript名:ip-apiでIPアドレスから場所を検索
— Created 2017-06-05 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set myIP to getGeoLocationByIPAIP("45.59.69.202") of me
–>  {lon:-75.5281, zip:"19801", query:"45.59.69.202", as:"AS3800 Ionity Corporation", countryCode:"US", isp:"Ionity Corporation", lat:39.7157, city:"Wilmington", region:"DE", timezone:"America/New_York", org:"Ionity Corporation", country:"United States", regionName:"Delaware", status:"success"}

–http://ip-api.com/docs/api:json
on getGeoLocationByIPAIP(myIP)
  set aURL to "http://ip-api.com/json/" & myIP
  
set aRes to callRestGETAPIAndParseResults(aURL) of me
  
set aRESTres to (json of aRes)
  
set aRESTcode to responseCode of aRes
  
if aRESTcode is not equal to 200 then return false
  
return aRESTres as record
end getGeoLocationByIPAIP

–GET methodのREST APIを呼ぶ
on callRestGETAPIAndParseResults(aURL)
  set aRequest to current application’s NSMutableURLRequest’s requestWithURL:(current application’s |NSURL|’s URLWithString:aURL)
  
  
aRequest’s setHTTPMethod:"GET"
  
aRequest’s setCachePolicy:(current application’s NSURLRequestReloadIgnoringLocalCacheData)
  
aRequest’s setHTTPShouldHandleCookies:false
  
aRequest’s setTimeoutInterval:60
  
aRequest’s setValue:"application/json" forHTTPHeaderField:"Accept"
  
  
set aRes to current application’s NSURLConnection’s sendSynchronousRequest:aRequest returningResponse:(reference) |error|:(missing value)
  
set resList to aRes as list
  
  
set bRes to contents of (first item of resList)
  
set resStr to current application’s NSString’s alloc()’s initWithData:bRes encoding:(current application’s NSUTF8StringEncoding)
  
  
set jsonString to current application’s NSString’s stringWithString:resStr
  
set jsonData to jsonString’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
  
set aJsonDict to current application’s NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value)
  
  
–Get Response Code & Header
  
set dRes to contents of second item of resList
  
if dRes is not equal to missing value then
    set resCode to (dRes’s statusCode()) as list of string or string
    
set resHeaders to (dRes’s allHeaderFields()) as list of string or string
  else
    set resCode to 0
    
set resHeaders to {}
  end if
  
  
return {json:aJsonDict, responseCode:resCode, responseHeader:resHeaders}
end callRestGETAPIAndParseResults

★Click Here to Open This Script 

Posted in Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

ipinfo.ioでIPアドレスから場所を検索

Posted on 2月 16, 2018 by Takaaki Naganoya
AppleScript名:ipinfo.ioでIPアドレスから場所を検索
— Created 2017-06-05 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

set myIP to getGeoLocationByIPinfo("45.59.69.202") of me
–>  {​​​​​region:"Delaware", ​​​​​city:"Wilmington", ​​​​​country:"US", ​​​​​org:"AS3800 Talent House, Inc.", ​​​​​hostname:"No Hostname", ​​​​​postal:"19801", ​​​​​ip:"45.59.69.202", ​​​​​loc:"39.7157,-75.5281"​​​}

–http://ipinfo.io/developers
on getGeoLocationByIPinfo(myIP)
  set aURL to "http://ipinfo.io/" & myIP
  
set aRes to callRestGETAPIAndParseResults(aURL) of me
  
set aRESTres to (json of aRes)
  
set aRESTcode to responseCode of aRes
  
if aRESTcode is not equal to 200 then return false
  
return aRESTres as record
end getGeoLocationByIPinfo

–GET methodのREST APIを呼ぶ
on callRestGETAPIAndParseResults(aURL)
  set aRequest to current application’s NSMutableURLRequest’s requestWithURL:(current application’s |NSURL|’s URLWithString:aURL)
  
  
aRequest’s setHTTPMethod:"GET"
  
aRequest’s setCachePolicy:(current application’s NSURLRequestReloadIgnoringLocalCacheData)
  
aRequest’s setHTTPShouldHandleCookies:false
  
aRequest’s setTimeoutInterval:60
  
aRequest’s setValue:"application/json" forHTTPHeaderField:"Accept"
  
  
set aRes to current application’s NSURLConnection’s sendSynchronousRequest:aRequest returningResponse:(reference) |error|:(missing value)
  
set resList to aRes as list
  
  
set bRes to contents of (first item of resList)
  
set resStr to current application’s NSString’s alloc()’s initWithData:bRes encoding:(current application’s NSUTF8StringEncoding)
  
  
set jsonString to current application’s NSString’s stringWithString:resStr
  
set jsonData to jsonString’s dataUsingEncoding:(current application’s NSUTF8StringEncoding)
  
set aJsonDict to current application’s NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value)
  
  
–Get Response Code & Header
  
set dRes to contents of second item of resList
  
if dRes is not equal to missing value then
    set resCode to (dRes’s statusCode()) as number
    
set resHeaders to (dRes’s allHeaderFields()) as record
  else
    set resCode to 0
    
set resHeaders to {}
  end if
  
  
return {json:aJsonDict, responseCode:resCode, responseHeader:resHeaders}
end callRestGETAPIAndParseResults

★Click Here to Open This Script 

Posted in JSON Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

freegeoipで指定IPアドレスの位置情報を取得

Posted on 2月 16, 2018 by Takaaki Naganoya
AppleScript名:freegeoipで指定IPアドレスの位置情報を取得
— Created 2017-12-20 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"

property |NSURL| : a reference to current application’s |NSURL|
property NSData : a reference to current application’s NSData
property NSJSONSerialization : a reference to current application’s NSJSONSerialization

set aRes to getIPAddressInfoFreeGeoIP("91.108.183.75") of me as list of string or string –anything
–> {time_zone:"Europe/Stockholm", city:"", zip_code:"", longitude:18.056, metro_code:0, country_name:"Sweden", latitude:59.3247, country_code:"SE", region_code:"", region_name:"", |ip|:"91.108.183.75"}

–http://freegeoip.net
on getIPAddressInfoFreeGeoIP(IPAddress)
  try
    with timeout of 10 seconds
      set link to "http://freegeoip.net/json/" & IPAddress
      
set theURL to |NSURL|’s URLWithString:link
      
set jsonData to NSData’s dataWithContentsOfURL:theURL
      
set aJsonDict to (NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value))
      
return aJsonDict
    end timeout
  on error
    return missing value
  end try
end getIPAddressInfoFreeGeoIP

★Click Here to Open This Script 

Posted in Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Returns the value in BTC

Posted on 2月 16, 2018 by Takaaki Naganoya
AppleScript名:Returns the value in BTC
— Created 2017-12-24 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"

property |NSURL| : a reference to current application’s |NSURL|
property NSData : a reference to current application’s NSData
property NSJSONSerialization : a reference to current application’s NSJSONSerialization

set aInfo to retValueInBTC("JPY", "10000") of me
–>  "0.00654764"

on retValueInBTC(aCurrency, aVal)
  set aRec to {currency:aCurrency, value:aVal}
  
set reqURLStr to "https://blockchain.info/tobtc"
  
set aURL to retURLwithParams(reqURLStr, aRec) of me
  
try
    with timeout of 10 seconds
      set curl_command to "curl " & quoted form of aURL
      
set jRes to do shell script curl_command
      
return jRes
    end timeout
  on error
    return missing value
  end try
end retValueInBTC

on retURLwithParams(aBaseURL, aRec)
  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 qList to {}
  
repeat with i from 1 to aLen
    set aName to contents of item i of aKeyList
    
set aVal to contents of item i of aValList
    
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 

Posted in Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Bitcoin Exchange Rates APIを呼び出す

Posted on 2月 16, 2018 by Takaaki Naganoya
AppleScript名:Bitcoin Exchange Rates APIを呼び出す
— Created 2017-12-11 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.5"
use scripting additions
use framework "Foundation"

property |NSURL| : a reference to current application’s |NSURL|
property NSData : a reference to current application’s NSData
property NSJSONSerialization : a reference to current application’s NSJSONSerialization

set aInfo to getBitcoinExchangeRating() of me as list of string or string
–> {​​​​​CNY:{​​​​​​​15m:85561.31, ​​​​​​​sell:85497.93, ​​​​​​​symbol:"¥", ​​​​​​​last:85561.31, ​​​​​​​buy:85624.69​​​​​}, ​​​​​PLN:{​​​​​​​15m:45977.18, ​​​​​​​sell:45943.12, ​​​​​​​symbol:"zł", ​​​​​​​last:45977.18, ​​​​​​​buy:46011.23​​​​​}, ​​​​​THB:{​​​​​​​15m:426039.93, ​​​​​​​sell:425724.34, ​​​​​​​symbol:"฿", ​​​​​​​last:426039.93, ​​​​​​​buy:426355.52​​​​​}, ​​​​​AUD:{​​​​​​​15m:16863.96, ​​​​​​​sell:16851.47, ​​​​​​​symbol:"$", ​​​​​​​last:16863.96, ​​​​​​​buy:16876.45​​​​​}, ​​​​​CLP:{​​​​​​​15m:8071171.16, ​​​​​​​sell:8065192.44, ​​​​​​​symbol:"$", ​​​​​​​last:8071171.16, ​​​​​​​buy:8077149.89​​​​​}, ​​​​​SEK:{​​​​​​​15m:108311.42, ​​​​​​​sell:108231.19, ​​​​​​​symbol:"kr", ​​​​​​​last:108311.42, ​​​​​​​buy:108391.65​​​​​}, ​​​​​BRL:{​​​​​​​15m:43429.07, ​​​​​​​sell:43396.9, ​​​​​​​symbol:"R$", ​​​​​​​last:43429.07, ​​​​​​​buy:43461.24​​​​​}, ​​​​​DKK:{​​​​​​​15m:81673.5, ​​​​​​​sell:81613.0, ​​​​​​​symbol:"kr", ​​​​​​​last:81673.5, ​​​​​​​buy:81734.0​​​​​}, ​​​​​GBP:{​​​​​​​15m:9741.63, ​​​​​​​sell:9734.41, ​​​​​​​symbol:"£", ​​​​​​​last:9741.63, ​​​​​​​buy:9748.84​​​​​}, ​​​​​RUB:{​​​​​​​15m:759210.64, ​​​​​​​sell:758648.26, ​​​​​​​symbol:"RUB", ​​​​​​​last:759210.64, ​​​​​​​buy:759773.03​​​​​}, ​​​​​CHF:{​​​​​​​15m:12874.51, ​​​​​​​sell:12864.97, ​​​​​​​symbol:"CHF", ​​​​​​​last:12874.51, ​​​​​​​buy:12884.04​​​​​}, ​​​​​ISK:{​​​​​​​15m:1379204.64, ​​​​​​​sell:1378183.0, ​​​​​​​symbol:"kr", ​​​​​​​last:1379204.64, ​​​​​​​buy:1380226.29​​​​​}, ​​​​​SGD:{​​​​​​​15m:17490.64, ​​​​​​​sell:17477.68, ​​​​​​​symbol:"$", ​​​​​​​last:17490.64, ​​​​​​​buy:17503.6​​​​​}, ​​​​​EUR:{​​​​​​​15m:11399.17, ​​​​​​​sell:11385.02, ​​​​​​​symbol:"€", ​​​​​​​last:11399.17, ​​​​​​​buy:11413.33​​​​​}, ​​​​​NZD:{​​​​​​​15m:18527.65, ​​​​​​​sell:18513.92, ​​​​​​​symbol:"$", ​​​​​​​last:18527.65, ​​​​​​​buy:18541.37​​​​​}, ​​​​​USD:{​​​​​​​15m:13013.82, ​​​​​​​sell:13004.18, ​​​​​​​symbol:"$", ​​​​​​​last:13013.82, ​​​​​​​buy:13023.46​​​​​}, ​​​​​TWD:{​​​​​​​15m:389815.96, ​​​​​​​sell:389527.21, ​​​​​​​symbol:"NT$", ​​​​​​​last:389815.96, ​​​​​​​buy:390104.72​​​​​}, ​​​​​KRW:{​​​​​​​15m:14025514.37, ​​​​​​​sell:14015124.95, ​​​​​​​symbol:"₩", ​​​​​​​last:14025514.37, ​​​​​​​buy:14035903.78​​​​​}, ​​​​​JPY:{​​​​​​​15m:1474075.39, ​​​​​​​sell:1472983.47, ​​​​​​​symbol:"¥", ​​​​​​​last:1474075.39, ​​​​​​​buy:1475167.31​​​​​}, ​​​​​INR:{​​​​​​​15m:833116.13, ​​​​​​​sell:832498.99, ​​​​​​​symbol:"₹", ​​​​​​​last:833116.13, ​​​​​​​buy:833733.26​​​​​}, ​​​​​HKD:{​​​​​​​15m:101728.97, ​​​​​​​sell:101653.61, ​​​​​​​symbol:"$", ​​​​​​​last:101728.97, ​​​​​​​buy:101804.32​​​​​}, ​​​​​CAD:{​​​​​​​15m:16568.51, ​​​​​​​sell:16556.23, ​​​​​​​symbol:"$", ​​​​​​​last:16568.51, ​​​​​​​buy:16580.78​​​​​}​​​}

set aVal to (aInfo’s valueForKeyPath:"JPY") as list of string or string
–> {​​​​​15m:1483814.35, ​​​​​sell:1483366.93, ​​​​​symbol:"¥", ​​​​​last:1483814.35, ​​​​​buy:1484261.76​​​}

on getBitcoinExchangeRating()
  try
    with timeout of 10 seconds
      set link to "https://blockchain.info/ticker" –Exchange Rates API
      
set theURL to |NSURL|’s URLWithString:link
      
set jsonData to NSData’s dataWithContentsOfURL:theURL
      
set aJsonDict to (NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value))
      
return aJsonDict
    end timeout
  on error
    return missing value
  end try
end getBitcoinExchangeRating

★Click Here to Open This Script 

Posted in Network REST API | Tagged 10.11savvy 10.12savvy 10.13savvy | Leave a comment

Post navigation

  • Older posts
  • Newer posts

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

Google Search

Popular posts

  • macOS 26, Tahoe
  • KagiのWebブラウザ、Orion
  • Script Debuggerの開発と販売が2025年に終了
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • NSObjectのクラス名を取得 v2.1
  • macOS 15:スクリプトエディタのAppleScript用語辞書を確認できない
  • 2024年に書いた価値あるAppleScript
  • (確認中)AppleScript Dropletのバグっぽい動作が解消?
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Script Debuggerがフリーダウンロードで提供されることに
  • 指定フォルダ以下の画像のMD5チェックサムを求めて、重複しているものをピックアップ
  • Apple、macOS標準搭載アプリ「写真」のバージョン表記を間違える
  • 執筆中:AppleScript最新リファレンスver2.8対応(macOS 15対応アップデート)
  • Keynoteで選択中のtext itemの冒頭のフォントを太くする v2
  • macOS 15.5beta5(24F74)でaliasのキャスティングバグが修正された???
  • 複数の重複検出ルーチンを順次速度計測
  • 余白トリミング実験 v3
  • Dock Menu

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (438) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (159) 26.0savvy (24) CotEditor (66) Finder (52) Keynote (120) 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 (76) Pages (56) Safari (44) 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
  • 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
  • System
  • Tag
  • Telephony
  • Text
  • Text to Speech
  • timezone
  • Tools
  • Update
  • URL
  • UTI
  • Web Contents Control
  • WiFi
  • XML
  • XML-RPC
  • イベント(Event)
  • 未分類

アーカイブ

  • 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