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

タグ: 27.0savvy

macOS 26.4で実装されたAppleScript scanning機能

Posted on 8月 6 by Takaaki Naganoya

Appleが現地時間2026年08月03日付けで公開/アップデートした「Apple Platform Security (PDF)」によると、Appleは悪意のあるコマンドをターミナルにコピー&ペーストさせたり、悪意のあるスクリプトをダウンロードし実行させるソーシャルエンジニアリング攻撃に対処するため、ターミナルのペースト保護機能を含め3つの保護機能を macOS 26.4で実装。

それが、「Terminal paste protection」「Pasteboard command blocking」そしてAppleScriptに関する「AppleScript scanning」です。

全文を含むPDF(英文)
https://help.apple.com/pdf/security/en_US/apple-platform-security-guide.pdf

(原文)
AppleScript scanning for AppleScript and JavaScript for Automation (JXA) scripts uses XProtect technology. Because the scanning is integrated into the OpenScripting framework, all AppleScript executions on macOS are subject to local inspection, whether the script is loaded from storage or from memory.

「AppleScript scanning for AppleScript and JavaScript for Automation (JXA) scripts 」はXProtect技術を用いています。このスキャニングはOpen Scripting Architecture frameworkに組み込まれており、すべてのmacOS上のローカルの資源への探索を行うAppleScriptの実行がスキャン対象です。これは、SSDやHDDなどのストレージから読み込まれたか、メモリ上から読み込まれたかを問いません。すべてが対象です。

(原文)
When a script matches a known malicious signature, macOS blocks execution and presents the user with a notification.

これらのScriptが既知の悪意ある署名にマッチした場合、macOSは通知を表示しつつ実行をブロックします(XProtectがマルウェアの検出を、バイナリ全体を見て実行)。

(原文)
If the blocked script is associated with a file stored on one of the following, the user can choose to override the block through the existing malware protection override in Finder: •Internal storage •External device •Cloud-based service •Mounted file server

実行をブロックされたScriptがストレージ(内蔵SSD、外付けドライブ、クラウドストレージ、マウントしたファイルサーバー)上のファイルに関連づけられている場合、ユーザーは Finder の既存のマルウェア保護オーバーライドを通じてブロックをオーバーライドすることを選択できます(実際にブロックされるところを見ていないので不明)。

(原文)
Scripts executed without an associated file—such as those run directly from memory—can’t be overridden. The user needs to save the script first before requesting an override.

関連ファイルなしで実行されるスクリプト (メモリから直接実行されるスクリプトなど) はオーバーライドできません。ユーザーは、オーバーライドをリクエストする前に、まずスクリプトをファイルに保存する必要があります。

Piyomaru Softwareの所見

マルウェアがAppleScriptバイナリを含む場合、その実行Scriptのチェックサム同士で比較している印象を受けます。実行時に実行Scriptのチェックサムを取得し、問題があるScriptと同一であれば実行をブロック、と読めます。

気になる点は2つ。

XProtectによってマルウェアScriptとの比較を行うのにどの程度の処理のオーバーヘッドが発生するのか? 
単独のファイルとして存在していないScriptのチェックを行えるのか? 

メモリ上で組み立てたScriptについてはチェック対象ではないといった記述があるため、他の実行ファイルのバイナリ内部に埋め込んだScriptについては、対処できないように見えます。

また、URL Events経由で流し込まれた悪意あるAppleScript(スクリプトエディタでオープン)の構文確認時(Apple Eventsへのコンパイル時)にXProtectのチェックが動かないと意味がないのでは? とも考えます。

さらに、何かの手違いで手元のScriptが「マルウェアScript」と判定された場合の異議申し立て方法については一切何も説明されていません。

いきなり強めのセキュリティしばりを加えるよりも、段階的にセキュリティ機能を追加するという方針は(なんとなく)理解できはするのですが、例によってApple社内の誰が本件について担当しているのかが不明なので、文句を言う先がよくわかりません。

Posted in Security | Tagged 26.0savvy 27.0savvy | Leave a comment

macOS 27 AppleScriptからApple Foundation Modelsを呼び出す

Posted on 8月 4 by Takaaki Naganoya

macOS 27から標準搭載されるシェルコマンド「fm」(/usr/bin/fm)を通じて、Apple Foundation Models(=Apple IntelligenceのLLM)を呼び出すことができます。

macOS 27のBetaをインストールしてある環境であれば、AFMを試すことができます。開発者登録している方、あるいは一般のユーザーでもβユーザー登録してあればmacOS 27をインストールできます。

Apple Silicon搭載Macであればこれらの環境を利用可能ですが、念のためRAM 16Gバイト以上だと安心できることでしょう。

その他、fmコマンドを利用するには、システム設定でSiriをオンにしてある必要があります。AFMが使用可能になっているかどうかをfmコマンド自体で確認可能です。

ターミナル(Terminal.app)上で以下のように「fm available」コマンドを実行することで、現在使用中の(macOS 27以降の)環境でAFMが使用可能かどうかを確認できます。

% fm available
System model available
PCC model available

有効/無効確認の手段が用意されていることは前向きに評価できます。

fmコマンドでできること

fmコマンドができることは、LLMへの問い合わせです。おおよそChatGPTやGeminiなどへの問い合わせを行うのと同様に自然言語によるテキストチャットによる対話も行えます。

英語でも日本語でも応答してくれますが、応答/翻訳できるのは15言語程度です。

日本語、英語(米国、英国、オーストラリア、カナダ、ニュージーランド、インド、シンガポール)、フランス語、ドイツ語、イタリア語、ポルトガル語、中国語(簡体字、繁体字)、韓国語、ベトナム語、デンマーク語、オランダ語、ノルウェー語、スウェーデン語、トルコ語

AFMからの応答は必要に応じてMarkdownで装飾されて返ってきます(プログラムリストや見出しなど)。

用途に応じて2つのモデルを指定可能

AFMにはデフォルトで用意されているLLMモデルが2つあります。

ローカルで完結する「system」と、Appleのプライベートクラウドのサーバー群で動作する「pcc」の2つです。インターネット接続不要のsystem、接続必須のpccと見ることもできます。

ローカルのモデルは、「とりあえず動く」程度の内容であり、ちょっと込み入った内容になると、

「Appleのウェブサイトで、最新の製品情報や機能をご確認ください。」

といった当たり障りのない(情報量のない)内容を返すようになります。

コマンドラインからfmコマンドを介してモデルを指定して応答を取得してみましょう。モデルによって情報量が大幅に異なります。

% fm respond "AppleScriptとは何ですか?" --model system
% fm respond "AppleScriptとは何ですか?" --model pcc

(system)AppleScriptは、Appleのコンピュータで動作するスクリプト言語で、アプリケーションやシステムの操作を自動化するために使用されます。テキストベースの言語であり、テキスト編集やファイル操作、アプリケーションの起動など、さまざまなタスクを簡潔に記述できる点が特徴です。

(pcc)AppleScriptは、Appleが開発したスクリプト言語で、macOS上でアプリケーションやシステム機能を自動化するために使用されます。この言語は、英語に近い自然な構文を持っているため、プログラミングの経験が少ない人でも比較的簡単にスクリプトを書くことができます。

AppleScriptを使うことで、例えば以下のような作業を自動化できます:

- ファイルやフォルダの管理
- アプリケーションの操作(メールの送信、ドキュメントの作成など)
- システム設定の変更
- インターネットからのデータの取得

スクリプトは「Script Editor」というアプリケーションを使って作成・実行され、他のアプリケーションとAppleEventsというメカニズムを通じて通信します。これにより、macOS環境での作業効率を大幅に向上させることができます。

AFMの使用可能な残トークン確認

pccはAppleの自社クラウド上にあるLLMのサービスであるため、ローカルのsystemとは異なり、使用可能なトークン上限が設定されています。Web上で探してみると「4096トークン/日」となっているようですが、macOS 27のリリース時にこのままなのかは不明です。まだβ版であるため、最終仕様ではありません。

% fm quota-usage --model pcc
PCC: ✓ Available
% fm quota-usage --model system
System: Not applicable (quota only applies to PCC)

fmコマンド経由では、使用可能なトークン数を厳密に取得することはできないようです。あくまで、使用可能(Available)かどうかを返してきます。

なお、実行するまえにクエリがどの程度のトークンを消費するかを確認できるようになっています。

% fm count-tokens "AppleScriptとは何ですか?"
Token count: 15

このとき、pccかsystemかといったモデルの指定はできませんが、暗黙の了解でpcc使用時の消費トークン数でしょう(ローカル動作のsystemではトークン消費を気にする必要がありませんし)。

AFMの情報最新日付を確認

LLMへの一般的なアプローチがAFMでも有効で、モデルの学習データの最新日付がいつなのかを問い合わせると答えてくれます。

% fm respond 'あなたの現在の日付を教えてください。' --model pcc
% fm respond 'あなたの現在の日付を教えてください。'

  pcc: 2025年04月29日
  system: 2024年10月29日

つまり、これよりも新しいネット上の情報は反映されていない状態です。macOS 27のリリース時(iOS 27のリリース時?)にはこれらのモデルも更新される可能性がありますが、本稿執筆時点では上記のとおりです。

# 本稿を書いて塩漬けにしている間に上記の応答が変わりました。

----system(Local LLM)の応答(2026/08/04)
私はAppleによって開発された言語モデルです。

[必要なツールを検索]
今日の日付を取得するためのツールが存在しません。しかし、現在の日付を正確に把握するには、サーバー上のタイムサーバーからの情報が必要であり、その情報を提供できる機能は存在しません。そのため、具体的な日付を提供することはできません。
---

AFMも一般的なLLMと同様に、個人情報に関わることには答えてくれなかったり、米国における政治状況やAppleの利益に反することには回答してくれません。

fmコマンドを実行する環境ごとに利用できるmodelも異なる

macOS標準搭載のTerminal.app上では、modelがsystem(Local)でもpcc(クラウド)でもどちらも指定して実行できます。

しかし、AppleScriptのdo shell scriptコマンド上では制限がかかっており、利用できるのはsystem(Local)のみです。

do shell scriptコマンド内でも環境変数の設定により、Terminal.app上と同様にpcc(クラウド)を利用できるようになるのかはわかりませんが、現状ではsystem(Local)のみであると認識しています。

逆をいえば、Swiftでそのような処理を行うプログラムを書いてAppleScriptからdo shell scriptで呼び出せばよいだけでしょう。そういう使い方ができないAppleScript実行環境(ライブラリ呼び出し不可+バンドル形式Script実行不可)では、system(Local)のみ利用できることになるでしょう。

Posted in Apple Inteligence | Tagged 27.0savvy | Leave a comment

ディスプレイ選択ダイアログ

Posted on 7月 21 by Takaaki Naganoya

現時点でMacに接続されているディスプレイ情報を取得して、座標値からその位置関係や大きさを計算して画像にレンダリングし、ポップアップメニューから処理対象のディスプレイを選択してNSRectを返すAppleScriptです。

まだ試作品レベルですが、macOS 27 beta上で動作しています。ただ、NSAlertによるダイアログを表示させた場合に、アイコンもタイトルもサブタイトルもすべて左寄せになってしまうところがいまひとつです。

なんでこんなものを作ったかといえば、複数ディスプレイがつながっているMac上で任意のディスプレイ上に表示されているウィンドウ(に含まれるdocument)だけを処理対象とし、他のディスプレイ上のウィンドウを無視するといった処理をしたいと考えたからです。

少々AIにお願いしてコードを書いてもらっていますが、そのためにやや不要な処理までやっているような気もします。

AppleScript名:ディスプレイ情報を取得して、位置関係を画像化_take2_1b.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2026/07/19
—
–  Copyright © 2026 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.8"
use scripting additions
use framework "Foundation"
use framework "AppKit"

property K_MAX_WIDTH : 600.0
property K_MAX_HEIGHT : 300.0
property selectedDispRes : missing value

set {aInfoList, aIMG, aSizeList} to drawDisplayLayout() of me
–return aIMG

set aInfoList to aInfoList as list
if length of aInfoList = 1 then return

set aParamRec to {myDispInfo:aInfoList, myImgView:aIMG, mySizeList:aSizeList, mymainTitle:"ディスプレイ選択", mySubTitle:"メイン画面が「1」、その他は左上から「2, 3…」となります。"}

–my dispLayoutAndPopup:aParamRec–for debugging on Script Editor
my performSelectorOnMainThread:"dispLayoutAndPopup:" withObject:(aParamRec) waitUntilDone:true
return (visibleFrame of selectedDispRes)’s |description|() as string –For Debugging

–Macに接続されているディスプレイ一覧から処理対象を選択するダイアログを表示
on dispLayoutAndPopup:aParam
  set dList to (myDispInfo of aParam) as list
  
set aIMG to myImgView of aParam
  
set aMainTitle to (mymainTitle of aParam) as string
  
set aSubTitle to (mySubTitle of aParam) as string
  
set {imgWidth, imgHeight} to (mySizeList of aParam) as list
  
set dNum to length of dList
  
set numStrList to makeNumberStringList(dNum) of me
  
  
set currentAlert to current application’s NSAlert’s alloc()’s init()
  
currentAlert’s setMessageText:aMainTitle
  
currentAlert’s setInformativeText:aSubTitle
  
  
set imageView to current application’s NSImageView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, imgWidth, imgHeight))
  
imageView’s setImage:aIMG
  
  
set a1Button to (current application’s NSPopUpButton’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, imgWidth – 100, 30)) pullsDown:false)
  
a1Button’s removeAllItems()
  (
a1Button’s addItemsWithTitles:(numStrList))
  
  
  
— 画像ビュー
  
set imageView to current application’s NSImageView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, imgWidth, imgHeight))
  
imageView’s setImage:aIMG
  
imageView’s setImageScaling:(current application’s NSImageScaleProportionallyUpOrDown)
  
  
— ポップアップ
  
set popupWidth to imgWidth – 80
  
set a1Button to (current application’s NSPopUpButton’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, popupWidth, 30)) pullsDown:false)
  
a1Button’s removeAllItems()
  (
a1Button’s addItemsWithTitles:(numStrList))
  
  
— OKボタン幅に合わせると見た目がよい
  
a1Button’s setControlSize:(current application’s NSControlSizeRegular)
  
  
————————————————–
  
— 中央寄せコンテナ
  
————————————————–
  
set containerWidth to imgWidth
  
set containerHeight to imgHeight + 60
  
  
set containerView to current application’s NSView’s alloc()’s initWithFrame:(current application’s NSMakeRect(0, 0, containerWidth, containerHeight))
  
  
— StackView
  
set stackView to current application’s NSStackView’s alloc()’s initWithFrame:(containerView’s |bounds|())
  
  
stackView’s setOrientation:(current application’s NSUserInterfaceLayoutOrientationVertical)
  
stackView’s setAlignment:(current application’s NSLayoutAttributeCenterX)
  
stackView’s setDistribution:(current application’s NSStackViewDistributionGravityAreas)
  
stackView’s setSpacing:16.0
  
  
— Auto Layout
  
stackView’s setTranslatesAutoresizingMaskIntoConstraints:false
  
  
— 追加
  
stackView’s addArrangedSubview:imageView
  
stackView’s addArrangedSubview:a1Button
  
  
containerView’s addSubview:stackView
  
  
————————————————–
  
— StackViewをコンテナ中央へ固定
  
————————————————–
  
set centerX to (stackView’s centerXAnchor())
  (
centerX’s constraintEqualToAnchor:(containerView’s centerXAnchor()))’s setActive:true
  
  
set centerY to (stackView’s centerYAnchor())
  (
centerY’s constraintEqualToAnchor:(containerView’s centerYAnchor()))’s setActive:true
  
  
————————————————–
  
— accessoryView設定
  
————————————————–
  
currentAlert’s setAccessoryView:containerView
  
currentAlert’s runModal()
  
  
–popup buttonの選択肢を取得する
  
set tmpSegSel to (a1Button’s indexOfSelectedItem()) as number
  
set tRes to (tmpSegSel + 1)
  
  
set selectedDispRes to (contents of item tRes of dList)
end dispLayoutAndPopup:

on makeNumberStringList(aMax)
  set aList to {}
  
set aCount to 1
  
repeat aMax times
    set the end of aList to (aCount as string)
    
set aCount to aCount + 1
  end repeat
  
return aList
end makeNumberStringList

on drawDisplayLayout()
  set allScreens to current application’s NSScreen’s screens()
  
if allScreens is missing value or allScreens’s |count|() = 0 then return
  
  
— 1. メイン画面(配列の先頭)を取得
  
set mainScreen to allScreens’s firstObject()
  
  
— 2. サブ画面たちをリストとして抽出
  
set otherScreensList to {}
  
repeat with i from 1 to (allScreens’s |count|()) – 1
    copy (allScreens’s objectAtIndex:i) to end of otherScreensList
  end repeat
  
  
— 3. サブ画面を「左上から順(Y座標の降順 > X座標の昇順)」に手動ソート
  
— ※AppleScript側でハンドリングした方がCocoaの構造体ネスト問題を回避できて確実です
  
repeat with i from 1 to (count otherScreensList)
    repeat with j from i + 1 to (count otherScreensList)
      set scrI to item i of otherScreensList
      
set scrJ to item j of otherScreensList
      
set frameI to scrI’s frame()
      
set frameJ to scrJ’s frame()
      
      
set yI to current application’s NSMinY(frameI)
      
set yJ to current application’s NSMinY(frameJ)
      
set xI to current application’s NSMinX(frameI)
      
set xJ to current application’s NSMinX(frameJ)
      
      
— Yが小さい(下にある)か、Yが同じでXが大きい(右にある)場合は入れ替え
      
if (yI < yJ) or (yI = yJ and xI > xX) then
        set item i of otherScreensList to scrJ
        
set item j of otherScreensList to scrI
      end if
    end repeat
  end repeat
  
  
— 4. 最終的な順序の配列を作成(1番目がメイン、2番目以降がサブ)
  
set sortedScreens to current application’s NSMutableArray’s array()
  (
sortedScreens’s addObject:mainScreen)
  
repeat with aScr in otherScreensList
    (sortedScreens’s addObject:aScr)
  end repeat
  
  
— 5. 全体を含むバウンディングボックスの計算
  
set minX to 9.9999E+4
  
set maxX to -9.9999E+4
  
set minY to 9.9999E+4
  
set maxY to -9.9999E+4
  
  
repeat with aScreen in sortedScreens
    set f to aScreen’s frame()
    
set sx to current application’s NSMinX(f)
    
set sy to current application’s NSMinY(f)
    
set sw to current application’s NSWidth(f)
    
set sh to current application’s NSHeight(f)
    
    
if sx < minX then set minX to sx
    
if sy < minY then set minY to sy
    
if (sx + sw) > maxX then set maxX to (sx + sw)
    
if (sy + sh) > maxY then set maxY to (sy + sh)
  end repeat
  
  
set totalWidth to maxX – minX
  
set totalHeight to maxY – minY
  
  
— 6. スケール比率の計算
  
set scaleX to K_MAX_WIDTH / totalWidth
  
set scaleY to K_MAX_HEIGHT / totalHeight
  
set theScale to scaleX
  
if scaleY < theScale then set theScale to scaleY
  
  
set imgWidth to totalWidth * theScale
  
set imgHeight to totalHeight * theScale
  
set canvasSize to current application’s NSMakeSize(imgWidth, imgHeight)
  
set displayImage to current application’s NSImage’s alloc()’s initWithSize:canvasSize
  
  
— 7. 描画処理
  
displayImage’s lockFocus()
  
  
current application’s NSColor’s clearColor()’s |set|()
  
current application’s NSRectFill(current application’s NSMakeRect(0, 0, imgWidth, imgHeight))
  
  
set screenCount to sortedScreens’s |count|()
  
repeat with idx from 0 to screenCount – 1
    set aScreen to (sortedScreens’s objectAtIndex:idx)
    
set f to aScreen’s frame()
    
    
set rx to ((current application’s NSMinX(f)) – minX) * theScale
    
set ry to ((current application’s NSMinY(f)) – minY) * theScale
    
set rw to (current application’s NSWidth(f)) * theScale
    
set rh to (current application’s NSHeight(f)) * theScale
    
set drawRect to current application’s NSMakeRect(rx, ry, rw, rh)
    
    
— 枠と背景
    
current application’s NSColor’s windowBackgroundColor()’s |set|()
    
current application’s NSRectFill(drawRect)
    
current application’s NSColor’s textColor()’s |set|()
    
current application’s NSFrameRectWithWidth(drawRect, 1.5)
    
    
— ★【修正】数字の文字列生成方法をNSNumber経由に修正
    
set numObj to (current application’s NSNumber’s numberWithInteger:(idx + 1))
    
set numStr to numObj’s stringValue()
    
    
set fontHeight to rh * 0.4
    
if fontHeight > 24.0 then set fontHeight to 24.0
    
if fontHeight < 12.0 then set fontHeight to 12.0
    
    
set numFont to (current application’s NSFont’s systemFontOfSize:fontHeight weight:(current application’s NSFontWeightBold))
    
set paraStyle to current application’s NSMutableParagraphStyle’s alloc()’s init()
    (
paraStyle’s setAlignment:(current application’s NSTextAlignmentCenter))
    
    
set attrDict to current application’s NSMutableDictionary’s dictionary()
    (
attrDict’s setObject:numFont forKey:(current application’s NSFontAttributeName))
    (
attrDict’s setObject:paraStyle forKey:(current application’s NSParagraphStyleAttributeName))
    (
attrDict’s setObject:(current application’s NSColor’s textColor()) forKey:(current application’s NSForegroundColorAttributeName))
    
    
set strSize to (numStr’s sizeWithAttributes:attrDict)
    
set textY to ry + ((rh – (strSize’s height)) / 2.0)
    
set textRect to current application’s NSMakeRect(rx, textY, rw, strSize’s height)
    
    (
numStr’s drawInRect:textRect withAttributes:attrDict)
  end repeat
  
  
displayImage’s unlockFocus()
  
  
return {sortedScreens, displayImage, {imgWidth, imgHeight}}
end drawDisplayLayout

★Click Here to Open This Script 

Posted in dialog System | Tagged 10.15savvy 26.0savvy 27.0savvy | Leave a comment

Apple Creator Studio 15.3 Update

Posted on 7月 2 by Takaaki Naganoya

Apple Creator Studio(以下、ACSと略)に所属するKeynote、Pages、Numbers(旧iWork Apps)がバージョン15.3にアップデートしました。同じくACSに所属するApple純正の画像編集アプリ「Pixelmator Pro」で各書類上の画像を編集するための連携機能が追加されました。

これらのアプリのAppleScript対応機能については、Keynote 15.3が新たなトランジッション「radial wipe」(日本語ローカライズ名は「放射状ワイプ」)を指定できるようになりました。他に変更点はありません。

ただし、radial wipeで画面上で指定できるパラメータ「方向」(時計回り/反時計回り)や角度、ぼかしはAppleScriptから指定できないので、実用上は微妙な感じです。

「放射状ワイプ」自体は、Keynote 14.xでは実装されていませんでした。15.xのどこかのバージョンで追加されたものと思われますが、どの時点で追加されたかは明確ではありません。

ただ、個人的にはそんなことはどうでもいいから、Keynote/Pages/Numbers上で画像の内容やパスを取得できるようにしてほしいです。

tell application "Keynote Creator Studio"
  tell front document
    –radial wipeは、画面上では「放射状ワイプ」と表示
    
set transition properties of current slide to {transition effect:radial wipe, transition duration:2.0, transition delay:0, automatic transition:false}
    
–角度、ぼかし、方向(時計回り/反時計回り)などは指定できない
  end tell
end tell

★Click Here to Open This Script 

Posted in news | Tagged 15.0savvy 26.0savvy 27.0savvy Keynote | Leave a comment

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

Google Search

Popular posts

  • シンプルな文字置換
  • macOS(Mac OS X/OS X)上のAppleScriptの歴史
  • Apple Creator Studioに含まれるKeynote/Pages/Numbersは新バージョン?
  • 最初期に書かれた書籍「AppleScript道入門」の序文をいま振り返る
  • Claris FileMaker Pro 2025(v22)がリリースされた
  • 指定フォルダ内から指定拡張子のファイルを取得し、エイリアスだったらオリジナルのパスをPOSIX pathで取得
  • MacBook Air/MacBook Proのディスプレイ開閉角度を取得
  • ASCII ART QR Encoder
  • macOS 15.7.2 スクリプトメニューから実行できなくなった地図系ライブラリ?
  • Adobe InDesignのAppleScript実行エンジンがCarbonからCocoaベースに書き換えられる
  • 「AppleScriptセキュリティ実践ガイド」を発売
  • 暗黙のuseコマンド
  • 開始時刻から終了時刻までhh:mm形式の文字列を15分単位でリスト出力
  • 各種GUIアプリ書類のオープン速度を向上するためにUIアニメーションの一時停止を
  • ASCII ARTで円を線で描く
  • Finder上で選択中のHEIC画像から位置情報を削除_v5
  • Keynote->Keynote Creator Studio(以下同様)
  • ASCII ARTで直線を引く v3.1
  • FSFindFolder failed with error=-43
  • 2025年に書いた価値あるAppleScript

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1391) 10.14savvy (587) 10.15savvy (440) 11.0savvy (283) 12.0savvy (212) 13.0savvy (204) 14.0savvy (159) 15.0savvy (172) 26.0savvy (51) CotEditor (68) Finder (53) Keynote (123) 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
  • Apple Inteligence
  • 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
  • Spaces
  • 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年8月
  • 2026年7月
  • 2026年6月
  • 2026年5月
  • 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