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

カテゴリー: news

Pages v12に謎のバグ。書類上に11枚しか画像を配置できない→解決

Posted on 5月 23, 2022 by Takaaki Naganoya

Pages v12に謎のバグを見つけました。Pagesでは書類上に任意の画像を配置できるわけですが、11枚目までは配置できるものの、12枚目を配置できません。実際には120枚ほど画像を用意してテストしていたので、12枚目が配置できればそれでOKかと言われれば、ぜんぜん不十分です。

→ OSの再起動を含む、追試を何回か行ってみたところ、その後このままでは画像の貼り込みができなくなっていました。そして、画像ファイル貼り込み前にパスの文字列をaliasにcastしたところ、問題なく120枚貼り込めました。

–> Watch Movie

以前にも、Keynoteに「特定サイズ以上の表を作るとエラーになる」とかいったバグが発生していましたが、この12個目を配置するとエラーになるというのも、内部で何か不可思議なリミッターを設けているように見えます。

スクリプトエディタ、Script Debuggerの両方で発生しています。おそらく、ランタイム環境が何であるかはこの問題に影響を与えていません。

macOS 10.12以降で、日本語環境限定で発生しているバグで有名なものに、「日本語入力Input Method経由でファイル名を入力している最中に、不必要な不可視文字が入力されてしまい、これがファイル処理を妨げる危険性がある」というものがありますが、これらの画像のファイル名をチェックしたところ、そうした危険な不可視文字は混入していませんでした。

# こうした、複数チームの担当製品の間で発生しているバグは、どこが担当してバグを調査するということはないようです。組織の細分化にともない、こうした組織境界面でバグが発生するととたんに無責任になるのがいまのAppleです(組織の構造上の問題です)

ちなみに、GUI経由で画像をPages書類上に配置してみたところ、12枚以上配置できました。Pagesにそのような上限が存在しているわけではないようです。

Pages書類(バンドル書類)内で何かファイル名の重複のようなものが発生したのかと考え、別の画像を(番号をずらして)指定してみましたが、同様の枚数を配置した時点でエラーになりました。

内部で発生している(していた)別のエラーを発生させないように、謎のリミッターをかけていた可能性もありますが、その必然性がよくわかりません。

AppleScript名:指定の画像をPagesに順次貼り込む(12枚で止まってしまう!).scpt
set baseName to "book24_"
set baseFol to (choose folder) as string

set pMax to 10

(*
tell application "Pages"
  –set newDoc to make new document
  
  tell front document
    set dCount to count every page
    
    repeat with i from (dCount + 1) to pMax
      make new page
    end repeat
    
    set newDCount to count every page
  end tell
end tell
*)

repeat with i from 1 to 120
  set aFN to baseFol & baseName & makeFN(i, 4) of me & ".jpg"
  
tell application "Pages"
    tell front document
      tell page i
        set newItem to make new image with properties {file:aFN}
        
tell newItem
          set position of it to {0, 0}
          
set height of it to 843
          
–set position of it to {-1, 0}
          
set locked to true
        end tell
      end tell
    end tell
  end tell
end repeat

on makeFN(aNum, aDigit)
  set aText to "00000000000" & (aNum as text)
  
set aLen to length of aText
  
set aRes to text (aLen – aDigit + 1) thru -1 of aText
  
return aRes
end makeFN

★Click Here to Open This Script 

Posted in Bug news | Tagged 10.15savvy 11.0savvy 12.0savvy Pages | Leave a comment

iWorkアプリケーションv12に共通のバグ? 新規ファイルの保存ができない

Posted on 5月 23, 2022 by Takaaki Naganoya

Apple iWorkアプリケーション(Keynote、Pages、Numbers)の最新バージョンv12.0において、共通のバグがあるのではないか? と見ています。もちろん、見ているだけでなくAppleにバグレポートもしています。

症状は、新規作成した書類を「保存できない」というものです。

以前にも、PDFをexportできないという致命的なバグが発生していましたが、今回のも同様のメカニズムで発生しているものと見ています。つまり、「Appleが自社OSに設定したセキュリティ機能によって、自社アプリであるKeynote、Pages、Numbersが自家中毒を起こしている」という状態です。

自分の勘違いだとよいのですが….

あとは、Numbersのsaveコマンドをよく見てみると、書類フォーマットに「as Numbers」というenumがあるのですが、これはAppleScriptの処理系では「number」の複数形として認識されてしまうので、この予約語自体に無理があります。ここは、「as Numbers format」といった予約語に変えるべきです。

AppleScript名:Keynoteで新規書類作成して指定名称で新規保存.scpt
set dtPath to (path to documents folder) as string
set uuidStr to (do shell script "uuidgen") & ".key"
set savePath to dtPath & uuidStr

tell application "Keynote"
  set nDoc to make new document with properties {document theme:theme id "Application/21_BasicWhite/Standard", width:1024, height:768}
  
save nDoc in file savePath as Keynote
end tell

★Click Here to Open This Script 

AppleScript名:Pagesで新規書類を作成して指定名称で新規保存.scpt
set dtPath to (path to documents folder) as string
set uuidStr to (do shell script "uuidgen") & ".pages"
set savePath to dtPath & uuidStr

tell application "Pages"
  set nDoc to make new document with properties {document template:template id "Application/Blank/ISO"}
  
save nDoc in file savePath as Pages Format
end tell

★Click Here to Open This Script 

AppleScript名:Numbersで新規書類作成して指定名称で新規保存.scpt
set dtPath to (path to documents folder) as string
set uuidStr to (do shell script "uuidgen") & ".numbers"
set savePath to dtPath & uuidStr

tell application "Numbers"
  set nDoc to make new document
  
save nDoc in file savePath as numbers –change "Numbers" word into "numbers format" because "numbers" is alredy registered as "list of number" or "every number"
end tell

★Click Here to Open This Script 

Posted in Bug news | Tagged 10.15savvy 11.0savvy 12.0savvy Keynote Numbers Pages | Leave a comment

新発売:AppleScript基礎テクニック集(11)AppleScriptアプレットとドロップレット

Posted on 5月 20, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第11巻、「AppleScriptアプレットとドロップレット」です。PDF 41ページ、サンプルAppleScriptのZipアーカイブを添付。

→ 販売ページ

本シリーズも、着手した頃には「そんなに細切れのテーマで書けるのか?」「そんな作り方で作れるはずがない」といった意見が集まっていたものですが(チーム内の打ち合わせ時には割と批判的です)、実際に作り出したらトンでもなく「書くべきこと」があって、書けば書くほど新たなテーマが見つかるという恐るべき状態。

今回の「アプレット」「ドロップレット」については、あまり振り返ったことがなかったのですが、いざ書いてみると尋常でないほどの情報が溜まっていました。

スクリプトエディタとScript Debuggerという2つの開発環境のちがい、アプレット、ドロップレット、Cocoa-AppleScriptアプレット、Script Debuggerの拡張ドロップレットなどなど。常駐タイプのアプレットに、タイマー割り込み処理のアプレット。アプレットのアイコンのカスタマイズに、アプレット内にAppleScriptライブラリを同梱する方法、Cocoa Frameworkを入れて呼び出す方法など、盛りだくさんな内容をお送りしています。

目次

■アプレット

AppleScriptをアプリケーション形式で書き出し
AppleScriptアプレットの種類
AppleScriptアプレットの作成方法
AppleScriptアプレットのオプション指定
常駐型AppleScriptアプレットの作成方法
常駐型AppleScriptアプレットの記述
アプレットの「初期画面」を指定
「初期画面」に画像をペーストした場合の動作
アプレット/ドロップレットのユーザーインタフェース
資料:スクリプト/アプレットのバンドル構造
資料:アプレットのカスタマイズ①
資料:アプレットのカスタマイズ②
資料:アプレットのカスタマイズ③

■Cocoa-AppleScriptアプレット

Cocoa-AppleScriptアプレットの作成方法
参考資料:Delegateスクリプトの内容確認方法
参考資料:Delegateスクリプトのヘッダー内容
参考資料:Delegateスクリプトのハンドラ

■Script Debuggerのアプレット/拡張アプレット

AppleScriptアプレット(SD)の作成方法
AppleScript拡張アプレット(SD)の作成方法
AppleScript拡張アプレット(SD)の作成方法

■ドロップレット

AppleScriptドロップレットの作成方法
AppleScriptドロップレットの作成方法
ドロップレットによるファイルの受信
macOS 10.12以降の問題への対策ドロップレット
macOS 12.4上でドロップレット処理を実験

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(10)ループ処理

Posted on 5月 13, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第10巻、「ループ処理」です。PDF 33ページ、サンプルAppleScriptのZipアーカイブを添付。

→ 販売ページ

ループ処理について、さまざまなrepeat文のバリエーションをまんべんなくすべて知って理解するよりも「間違いなく必要な場所で使える」ことが重要です。

repeat文にもいくつか書き方はあるものの、おおよそ2パターンぐらいでだいたい足ります。

それでも、複数の配列を同時にループしなくてはならないとか、ステップ値を想定の値に合わせるための調整とか、ノウハウらしきものはいろいろあります。

また、参照値をそのまま使うとエラーになる例もあるため、「contents of」でオブジェクトを取り出す必要があるといったささいなノウハウが必要なものでもあります。

目次

■ループによる繰り返し処理

AppleScriptの制御構文
繰り返しループ
repeat文①
repeat文②
repeat文③
repeat文④
repeat文⑤
repeat文⑥
exit repeat
多重ループ+exit repeat

■アプリケーションから取得したオブジェクトでループ

アプリケーションのオブジェクトを処理
Photos上の選択中の写真から情報を取得
Keynoteで選択中のオブジェクトを位置でソート
Numbersで表のセルが連結されていたら分離
targetが重複しているFinder Windowをクローズする
ミュージック.appで選択中のtrackの情報取得
大量のオブジェクト受信に備える

■高度な処理を簡潔に記述

複数の配列の同時ループ
ページ分け
再帰処理

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(9)ダイアログ表示

Posted on 5月 6, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第9巻、「ダイアログ表示」です。PDF 43ページ、サンプルScript、AppleScriptライブラリのZipアーカイブを添付。

→ 販売ページ

ダイアログ表示については、たいへん基礎的な内容でありながらも数多くの機能が盛り込まれています。サードパーティ側でさまざまなダイアログを作れるようになってきて、「みんなが思っているよりも、けっこう便利」な環境ができています。

利用するかしないかは、皆様の判断によると思いますが、実際に利用した方は割と便利で手放せなくなるようです。

目次

ダイアログ表示

標準搭載のさまざまなダイアログ表示機能
メッセージ表示系ダイアログ
メッセージ表示系ダイアログ
ファイル選択ダイアログ
フォルダ選択ダイアログ
ファイル名選択ダイアログ
多項目選択系ダイアログ
色選択ダイアログ
LAN内のリモート資源の選択
ローカルのアプリケーションの選択
リモート・アプリケーションの選択

AppleScriptライブラリを利用したダイアログ表示

AppleScriptライブラリの用語辞書の確認方法
筆者のライブラリにはサンプルScript掲載
iPhoneやiPad、MacとAirDrop通信
チェックボックス選択ダイアログを表示
日付選択ダイアログを表示
場所選択ダイアログを表示
複数ポップアップ選択ダイアログを表示
指定のRTF書類から抽出した書式を選択するダイアログ
指定の場所を異なる拡大倍率で地図表示
表形式のデータをダイアログ表示
ラベルつきテキストフィールドを表示/データ修正
指定色の一覧選択ポップアップメニューを表示
Scriptでカスタマイズ可能な複雑なダイアログ

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(8)環境整備

Posted on 4月 28, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第8巻、「環境整備」です。PDF 42ページ、スクリプトエディタ上にAppleScriptのスニペットを入力する開発支援用Script集「Piyomaru Script Assistant v2.0」つき。

→ 販売ページ

AppleScriptの開発に必要なツールはmacOSに最初から入っています。整備も何も、追加で揃える必要がありそうなのは、Late Night SoftwareのScript Debuggerのお試し版ぐらいのものです。情報として伝えるなら100文字以内で終わってしまいそうなお話です。

それでも「難しい」と感じる方がいるとすれば、それはノウハウが分散していて、どれを使うとかどれをどう設定しておくといった話がまとめられていないから、ということなんでしょう。ここに、AppleScriptの開発環境がどういうものか、詳細にご紹介いたします。

環境整備〜超基礎編

自分でマシンの管理を行えることが必要
AppleScriptの開発環境〜安定動作の平均的な環境
キーボード/マウスの選択
プリンタは?
ネット接続
複数台あったほうが便利
iPhoneと共通のiCloud設定
Apple Developper Account

環境整備〜構築編

スクリプトエディタ:編集、実行、書き出し
アクティビティモニタ:プロセス監視、終了
Script Debugger:統合開発環境
作業手順をまとめておく:Keynote
各種AppleScriptライブラリ
Piyomaru Script Assistant
各種AppleScript対応アプリケーション

環境整備〜設定編

スクリプトエディタ:構文フォーマット設定
スクリプトエディタ:ライブラリ設定
スクリプトメニュー
Finderの拡張子設定を使用環境で統一
システム環境設定
システム環境設定

環境整備〜メンテナンス編

定期的な再起動
定期的なディスクメンテナンス
異常プロセスの監視

Posted in Books news | Tagged 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(7)条件分岐(if文)

Posted on 4月 26, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第7巻、「条件分岐(if文)」です。PDF 34ページ、掲載Scriptアーカイブつき。

→ 販売ページ

if文が書けないとプログラムを書けないも同然。自転車でいえば、カーブで曲がれ ないとか、水たまりを避けられない走り方しかできない状態です。if文で華麗なコー ナリングを決められたら、初心者レベルは超えられたことでしょう。

if文とは?

条件分岐ってなに?
if文による条件分岐
if文による条件分岐
if文による条件分岐
if文で気をつけるべき点

比較演算とは?

比較演算ってなに?(数値)〜同一比較
比較演算ってなに?(数値)〜大小比較
参考資料:比較演算の演算子
文字の大小比較演算
特別な文字比較を行えるオプション
特別な文字比較のサンプル
複数の条件をリストにして、is inで照合
文字を含む、始まる、終わる演算
論理の反転
参考資料:is in演算子のはたらき
参考資料:「計算機」で16→10進数変換

より高度な条件分岐

UnicodeのNormalizeを強制して文字比較
アプリケーションのオブジェクト同士の照合
異なるアプリケーションのオブジェクト同士の照合

Posted in Books news | Tagged 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(6)フィルタ参照

Posted on 4月 24, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第6巻、「フィルタ参照」です。PDF 41ページ、掲載Scriptアーカイブつき。

→ 販売ページ

「フィルタ参照」はAppleScript独特の概念であり、「膨大なデータから正規表現で絞り込む」といった他の環境でありがちな方法とは異なります。

データのしぼりこみができないものと誤解されたり、説明しておく必要性をとても感じるものです。本書が好評を得られるかといった話は度外視してでも、書かないとダメという存在です。

フィルタ参照

条件に合うものを抽出するフィルタ参照①
条件に合うものを抽出するフィルタ参照②
条件に合うものを抽出するフィルタ参照③
フィルタ参照に使われる予約語
フィルタ参照の書き方
フィルタ参照の書き方
フィルタ参照の書き方
オブジェクトの各属性を指定して抽出
とくに指定しにくい属性値
フィルタ参照の傾向と対策
フィルタ参照の注意点

より高度なフィルタ参照

複数条件でしぼりこむ
開始日、終了日を指定
まとめて設定(無条件フィルタリング)
任意の項目をランダムで抽出

ひかえめなフィルタ参照

直接指定できない場合に、間接指定的に使う①
直接指定できない場合に、間接指定的に使う②

アプリケーションのフィルタ参照例紹介

メール(Mail)
リマインダー(Reminders)
メモ(Notes)
連絡先(Contacts)
ミュージック(Music)
Keynote
Pages
Pages:ページ中の指定サイズの文字のテキスト
Numbers

Posted in Books news | Leave a comment

PFiddlesoft UI Browserが製品終了に

Posted on 4月 23, 2022 by Takaaki Naganoya

AppleScriptの環境を構成する大きな要素部品である「PFiddlesoft UI Browser」が、開発者のBill Cheesemanのリタイアに伴い、製品終了になることが2022/4/17に表明されました。

GUI Scriptingの登場と同時に、この技術を完全にカバーし、生産性を格段に向上させるツールとしてUI Browserが登場しました。これを持っているかどうかでGUI ScriptingによるScript記述は天と地ほども差が出ます。

AppleScriptを書くのであれば、まず必携といっても過言ではないというツールであったわけです。

Script DebuggerとUI Browserを柱として、AppleScript系の開発環境が構築されてきたわけで、たいへんに重要なパーツであったことは誰にも否定できないことでしょう。

Bill Cheesemanの動向は定期的にウォッチしていたのですが、「引退した法律家からプログラマに転身」「いいかげん、けっこう高齢」といった認識は持っていたものの、「PreFab Software」から改名した「PFiddlesoft」というユニット名を使っていたあたりで「誰かに引き継ぎを考えているんだろう」と(勝手に)思っていました。

ただ、C++でゴリゴリにmacOSの深いところを叩きまくるようなアクセシビリティ系のプログラムを組むことはストレスが大きかったことでしょう。Cocoaの上からAppleScriptでOSのサービスを叩いていても「またバグが」「勝手な仕様変更が」などと苛立たしいことこの上ないわけで、もっと深い部分で叩いていたら、よりストレスは大きなものとなっていたことでしょう。

正直、このあたりの技術について同等の理解と技術力を有している人間といわれると、世界でも6人ぐらいしかいないことでしょう。Shane、Mark、Sal、Has、あとはAppleの現役エンジニア(世間せまっ!)。

その割にユーザーサポートの負担なども重圧となっていたことでしょうし、Billが続けられないという英断をしたことについては尊重すべきだと考えます。

とはいえ、その大きすぎる「穴」をどうやって埋めていくかというテーマを抱えてしまっているわけです。LateNight Softwareが継承する、とかいった話は(技術的な)可能性としてありそうではあるものの、(マーケティング的かつ費用的な意味では)ちょっとわかりません。

UI Browserの代替技術、代替製品という意味では「Piyomaru Dynamic Menu Clicker」があります。メニューについていえば、「このアプリケーションのこのメニューのこの項目」と指定すると、それを強制的にクリックするような仕組みをすでに作れています。

ただ、Webブラウザ上のコンテンツをGUI Scriptingを用いて操作するような用途では、ちょっと代替手段を持っていません。

UI Browserの基礎的な部品を各種Frameworkとして提供しているものの、ちょっとAppleScriptから気軽に叩いて機能を呼び出すというのは難しそうだと思われました。

UI Browser自体、販売終了するということなので、必要な人はすぐに購入すべきでしょう。そして、Webサイトも閉じる予定とのことなので、必要な資料などをPFiddlesoftのWebサイトからダウンロードしてバックアップしておくべきでしょう。

Posted in GUI Scripting news | Tagged 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(5)〜変数、プロパティ名

Posted on 4月 20, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第5巻、「変数、プロパティ名」です。PDF 31ページ、掲載Scriptアーカイブつき。

→ 販売ページ

変数名の決め方……自分がそこで困ったり悩んだり苦しんだりしたことはないのですが、いろいろ聞いてみると意外なほど困っている様子。え、そこなの????

長い変数名、短い変数名、プロパティとグローバル変数はどこが違うの? といった聞きたいけど聞く相手がいないといった「素朴な疑問」をなるべくあぶり出して、明確になるようまとめてみました。PDF 31ページ、掲載ScriptのZipアーカイブを添付。

変数/プロパティとは?

変数ってなに?
変数に入れられるものは?
ローカル変数とグローバル変数
変数の型ってあるの?
変数の型の確認方法は?
propertyと変数の違い(1/2)
propertyと変数の違い(2/2)
暗黙のrunハンドラ
暗黙のrunハンドラ内の変数
propertyの有効範囲=スコープ
propertyの有効範囲を超える
暗黙のrunハンドラ内の変数と各ローカル変数との衝突?

変数/プロパティの名前の決め方

変数名の命名ルール
「予約語」と衝突しない命名を
「予約語」と衝突しない命名を
アプリケーションの予約語
AppleScriptの単語が何として認識されているか
かんたんな変数名/プロパティ名の付け方
変数/プロパティの運用の要点

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

macOS 12.4beta1で「GUIなしツールから起動したAppleScriptでUTIを取得できない」バグ?

Posted on 4月 18, 2022 by Takaaki Naganoya

スクリプトメニューやService Stationなど、「メニューやウィンドウを持たないGUIなしツール」がたくさんmacOS環境にありますが、macOS 12.4上ではこれらのAppleScript起動ツールから起動したAppleScriptから、UniformtypeIdentifiers.frameworkを用いたUTIの取得をブロックされているようです。

スクリプトメニューで実行を確認した(途中までで実行がブロックされてしまった)AppleScriptを、スクリプトエディタ上で実行したところ、問題なく実行されます。ちなみに、内容は選択した画像ファイルをPixelmator Proで超解像処理してクリップボードに設定する(コピーする)という「おかわいらしい」内容のものです。

Service Stationは、コンテクストメニューからのAppleScript実行を可能にするAppleScript実行ツールですが、これについてもしかるべきハンドラを書いて同じAppleScriptを実行させるようにしてみたものの、UTIの取得をブロックされるようです。

→ 追試で、Terminal.app上からosascript経由で実行してみたところ、UniformtypeIdentifiers.frameworkの呼び出しに失敗することが判明

明示的にMain threadで実行しないとダメ???>UniformtypeIdentifiers.framework

AppleScript名:🟧選択中の画像を超解像💝処理してコピー.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2021/03/25
—
–  Copyright © 2021 Piyomaru Software, All Rights Reserved
—

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

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

set acceptUTI to "public.image"

set aFile to choose file
(*
tell application "Finder"
  set aFile to first item of (selection as alias list)
end tell
*)

–set aUTI to getUTIFromFile(aFile) of me –選択ファイルからUTIを
–display dialog aUTI
–if aUTI is equal to missing value then return

–set uRes to filterUTIList({aUTI}, acceptUTI) of me –選択ファイルのUTIが、受付可能UTIに含まれるかどうかチェック
–if uRes is equal to {} then return –選択したファイルが画像ではなかった

–掃除
tell application "Pixelmator Pro" to close every document without saving

–取得した画像を超解像処理してコピー
tell application "Pixelmator Pro"
  try
    open aFile
  on error
    close every document without saving
    
return
  end try
  
  
tell front document
    with timeout of 3000 seconds
      super resolution
    end timeout
  end tell
end tell

tell application "Pixelmator Pro"
  tell front document
    select all
    
copy
    
close without saving
  end tell
end tell

on getUTIFromFile(aFile)
  set aPath to POSIX path of aFile
  
  
set aWS to current application’s NSWorkspace’s sharedWorkspace()
  
set pRes to (aWS’s isFilePackageAtPath:aPath) as boolean
  
if pRes = false then
    set superType to (current application’s UTTypeData)
  else
    set superType to (current application’s UTTypePackage)
  end if
  
  
set pathString to current application’s NSString’s stringWithString:aPath
  
set aExt to (pathString’s pathExtension()) as string
  
  
set aUTType to current application’s UTType’s typeWithFilenameExtension:aExt conformingToType:(superType)
  
  
set aUTIstr to aUTType’s identifier() as string
  
return aUTIstr
end getUTIFromFile

–UTIリストが指定UTIに含まれているかどうか演算を行う
on filterUTIList(aUTIList, aUTIstr)
  set anArray to NSArray’s arrayWithArray:aUTIList
  
set aPred to NSPredicate’s predicateWithFormat_("SELF UTI-CONFORMS-TO %@", aUTIstr)
  
set bRes to (anArray’s filteredArrayUsingPredicate:aPred) as list
  
return bRes
end filterUTIList

★Click Here to Open This Script 

Posted in Bug news UTI | Tagged 12.0savvy Pixelmator Pro Service Station | Leave a comment

新発売:AppleScript基礎テクニック集(4)〜AppleScript用語辞書の読み方

Posted on 4月 13, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第4巻、「AppleScript用語辞書の読み方」です。PDF 39ページ、掲載Scriptアーカイブつき。

→ 販売ページ

AppleScript用語辞書の読み方については、業務の一環として記述していても理解していない人も多いので、理解できると大きな力になる内容です。普段使っていないアプリケーションでも、AppleScriptが書きやすくなるはずです。

用語辞書の構成要素

AppleScript用語辞書ってなに?
AppleScript用語辞書を読む前に
AppleScript用語辞書を読むために必要なもの
AppleScript用語辞書の確認方法
参考資料:えせスクリプタブルなアプリケーション一覧
AppleScript用語辞書の表示内容
AppleScript用語辞書掲載のサンプルScript
AppleScript用語辞書の生ファイルを表示
参考資料:用語辞書の生ファイルを得る意義
AppleScript用語辞書の構成要素
えせスクリプタブルな用語辞書の具体例

用語辞書の読み方

GUIアプリケーション操作のAppleScript記述例
アプリケーションのオブジェクト構造を調べる
document
へたくそなサンプルScriptをわかりやすく清書
より高機能なツールによる用語辞書の確認

画面上の機能とAppleScript的な属性値の付け合わせ

オブジェクトのプロパティを取得して調査
オブジェクトの選択状態による結果の変化
オブジェクトのプロパティを取得して調査
複数クラスの属性を継承している場合に
オブジェクトのプロパティを変更するテスト

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

新発売:AppleScript基礎テクニック集(3)〜ファイル・パス処理

Posted on 4月 10, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第3巻、「ファイル・パス処理」です。PDF 38ページ、掲載Scriptアーカイブつき。

→ 販売ページ

本書は、まさに「基礎」中の「基礎」ともいえる「パス操作」の基礎的なサンプルを提示して段階的に紹介。最近はCocoaの機能ばかり使っているので、逆にFinderやSystem Events相手に苦労しました。

ファイル・パス処理

ファイル・パス関連オブジェクトの全体像
ファイルパス各形式の特徴や用途
ファイル・パス形式
ホームディレクトリのパスを取得
参考資料:path to で指定できるパラメータ
参考資料:path to temporary items
各種パス形式の変換
パスの組み立て
指定ファイルの親フォルダ(上位フォルダ)を求める
指定パスのファイル名だけを求める
指定パスの拡張子を求める
指定パスの拡張子だけを置換
指定フォルダの存在確認
指定フォルダに指定名称のファイルが存在するか確認
指定ファイルのリネーム(名称変更)
指定フォルダのリネーム(名称変更)
指定ファイルがパッケージかどうかを求める
指定パスからUTIを求める
指定パスがフォルダかどうかを求める
POSIX pathのチルダ(「~」)を展開
フルパスからチルダ(「~」)つきPOSIX pathを計算
特定パスのローカライズ名称を求める
特定パスが所属するドライブ名を求める

Posted in Books news | Tagged 10.14savvy 10.15savvy 11.0savvy 12.0savvy | Leave a comment

iWork Appsがバージョン12.0にアップデートでselection動作正常化

Posted on 4月 9, 2022 by Takaaki Naganoya

昨日、iWork Apps(Keynote、Pages、Numbers)がVer.12.0にバージョンアップしていました。

AppleScript系ではgetコマンドが追加(Keynote、Pages)されたぐらいですが、これによって「selection」の動作がまともになりました。

前バージョンのアップデートで「スライド単位の選択」がselectionで取れなくなったことで、「何か変更しようとしている最中なんだろう」とは思っていました。予想どおりです。selection動作の空白期間を置かず、前バージョンの段階で実装されていたらもっとよかったのですが。

AppleScript対応アプリケーション、スクリプタブルなアプリケーションの世界観は、小さい世界観のものから大きい世界観のものまでいろいろです。

小さい世界観1(一番小さい):
アプリケーション起動、バージョン確認、書類のオープン、書類の印刷、アプリケーションの設定情報の確認

小さい世界観2:
小さい世界観1+アプリケーション固有のコマンドの実行

小さい世界観3:
小さい世界観2+書類やデータ作成のための機能、選択中のデータをおおまかに取得する機能
Keynote v11.xはここ

小さい世界観4:
小さい世界観3+書類上のオブジェクト作成/改変機能、選択中のデータやオブジェクトへの参照を取得する機能
Keynote v12.xはここ? まだ、Chart作成などで未サポートのグラフ形式などもあり、不完全

大きい世界観:
小さい世界観4+書類上のオブジェクトの多数を作成/改変する機能
Adobe InDesign、Word、Excel、PowerPoint、Pixelmator Proなど。かつての(v5ぐらいの)Pagesはここにいた

Keynoteでselectionを試してみたところ、何か書類上のオブジェクトを選択してselectionを実行すると、オブジェクトへの参照を(複数、リスト形式で)取れます。オブジェクトを選択した状態でなければ、書類上のどのスライドを表示中かというスライドへの参照が取得できるようです。

Keynoteにおける処理の自由度は大幅に上がりました。選択中のテキストボックスを取得できれば、その中に含まれるテキストなり書式つきテキストを取得して、書き直し、元のテキストボックスに書き戻すことができます。

選択中のイメージを取得できれば、その画像のパスを求めるかあるいはファイル名を求めて、オリジナルの画像ファイル(書類内に格納された画像、外部に存在する画像かはやってみないと)を画像フィルタ処理などを行って書き戻すといった処理が行いやすくなります。以前までのバージョンでは、選択した画像をいったんコピーしてクリップボードに格納し、そのクリップボード内の画像に対して画像処理していました。

Pagesでも、さまざまなオブジェクトへの参照がselectionによって取得できますが、あいかわらず「ページ」という概念があるんだかないんだか不明で、アプリケーションの根幹にかかわる部分なのでいまひとつ気軽に言えないところではあります。

Posted in news | Tagged 10.15savvy 11.0savvy 12.0savvy Keynote Numbers Pages | Leave a comment

新発売:AppleScript基礎テクニック集(2)〜tellブロックの整理

Posted on 4月 8, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第2巻、「tellブロックの整理」です。PDF 36ページ、掲載Scriptアーカイブつき。

→ 販売ページ

本書は、AppleScriptのプログラムの7割以上を占めると言われている、tellブロックの記述や整理方法についてまとめています。tellブロックの書き方が楽になれば、すなわちプログラムの7割以上の部分を楽に書けるともいえます。

tellブロックの記述は、AppleScriptのプログラミングにおいて、決して避けては通れない基礎テクニックなのです。

tellブロック

tellブロックの基本構造
省略表記が可能
省略表記の自動判別+自動展開
1行にまとめることも可能
変数, propertyに入れて指定
tellブロックにof itを補う必要があるケースも
it, me, AppleScript
tellブロックの分割
オブジェクト階層をサブルーチンに渡す
ちょっと凝ったtellブロック

GUI Scriptingにおけるtellブロック

画面上のGUI部品を強引に操作するGUI Scripting
手軽,遅い,tell文が深いGUI Scripting
tell文のネスティングを浅く書く工夫

同一アプリケーションの異なるバージョンへのtell

対象アプリケーションの指定方法
アプリケーションの存在確認
アプリケーションのバージョンを検出
Spotlightでアプリケーションを検索
ご参考:Spotlight検索ライブラリをインストール
Spotlightで同じ名前のアプリケーション情報を取得
対象アプリケーションを名前以外で指定

Posted in Books news | Tagged 12.0savvy | Leave a comment

AppleScript最新リファレンス 改訂検討

Posted on 4月 7, 2022 by Takaaki Naganoya

「AppleScript最新リファレンス」は、Piyomaru Softwareでいうところの「広辞苑」「大辞典」みたいなもので、改訂しようとすると、おおごとになってしまいます。

単純にページ数だけならこれよりも巨大な本というのは割とあるんですが、要素が多くて、作るのに「決死の覚悟」が必要な1冊です。

その下に中辞典とかポケット辞典みたいな本があって、細かいテーマごとに最新のアップデートを行なっています。近頃では、「ランタイム環境」ごとの挙動の違いであるとか、制限事項といったものをまとめてみたのが割と「最新リファレンス」改訂を意識した動きです。


▲「やる必要がありそうなもの」をリストアップするとこのぐらいに。Notarization、やったことがないんですよねー。そして、やることが多すぎて嫌気が差してアップデートが頓挫するという….

何回か、最新リファレンスの改訂を思い立ったことはありますが、当時のmacOSがとても目も当てられない状況だったりして(macOS 10.13とか)、表紙だけ作ってみたり、試作品を作ってみては「いかがなものか」と見送ってきた経緯があります。

また、Cocoa Scripting Courseは「最新リファレンス」のために準備した原稿を流用して作っています。「最新リファレンス」の更新に頓挫していなければ、Cocoa Scripting Courseは出てこなかったことでしょう。

一応、理想というか妄想に近い「目標」を立てて、そこに向けて調整したり妥協したりして、たどり着く場所に漂着するというところなんでしょう。

割と「ハウツー要素」とか「入門向け要素」については別の本に肩代わりさせていますし、巨大なテーマであった「Cocoa Scripting」はCocoa Scripting Courseとして独立。OSのアップデートによる変化とか、Scriptの利用・実行環境について注目したり(WebブラウザScripting本で着手)、正直なところ500ページを超える規模の本をそうそう作っていられま…..

作っていますね(汗)。

Posted in Books news | Leave a comment

新発売:AppleScript基礎テクニック集(1)〜間接指定

Posted on 4月 6, 2022 by Takaaki Naganoya

電子書籍の新刊を発売しました。新シリーズ「AppleScript基礎テクニック集」の第1巻、「間接指定」です。PDF 36ページ、掲載Scriptアーカイブつき。

1年に15冊も書いていると、割とPiyomaru Softwareの電子書籍も数が増えてきまして……何がどういう人向けのものなのか、おおまかなマップを示してほしいという話を聞くようになりました。

「基礎」とはいっても、入門者が読むような内容ではなく、脱・初心者とか中級者(とりあえず、目的のScriptを組めるレベル)向けといったところでしょうか。

目次:

間接指定

直接指定と間接指定
処理データの間接指定(配列から指定)
Unicode文字の間接指定
date(日付)オブジェクトの間接指定
ファイルパスの間接指定
参考資料:path to で指定できるパラメータ
音声読み上げキャラクタの間接指定
実行Scriptの間接指定
コマンドの間接指定
実行ハンドラ(サブルーチン)の間接指定

間接指定の導入実例

間接的に表同士の重なりを検出
間接的に表同士の重なりを検出
間接的にチェック範囲を検出
直接指定から間接指定に書き換えた結果
実際のScript

Posted in Books news | Tagged 12.0savvy | Leave a comment

基礎テクニック集を編纂中

Posted on 4月 3, 2022 by Takaaki Naganoya

AppleScriptの日常的かつ基礎的なテクニックをまとめた 、小規模でお求めやすい価格の電子書籍シリーズ「AppleScript基礎テクニック集」を刊行する予定です。

表紙をとりあえず作ってみましたが、この表紙を1シリーズ分作る瞬間が一番楽しいですね。


Racool_studio – jp.freepik.com によって作成された business 写真

→ AppleScript基礎テクニック集①間接指定


Technology photo created by drobotdean – www.freepik.com

→ AppleScript基礎テクニック集②tellブロック


Lookstudio – jp.freepik.com によって作成された people 写真

→ AppleScript基礎テクニック③ファイルパス処理


Student with laptop photo created by freepic.diller – www.freepik.com

→ AppleScript基礎テクニック集④AppleScript用語辞書の読み方

(以下省略)

Posted in Books news | Tagged 12.0savvy | Leave a comment

メニューからAppleScriptを呼び出すツールへの不満

Posted on 3月 28, 2022 by Takaaki Naganoya

macOS標準搭載のスクリプトメニューをはじめ、これまでにいろいろなツールが登場してきました。

しかし、どれもこれも機能が不十分で、満足できるものではありません。使えば使うほど「なんか違う」と感じてしまいます。

(1)メニューツールとScriptの連携ができない
(2)メニューに入れたScriptの説明を表示する機能がない
(3)明示的なメインスレッド実行ができない
(4)エンドユーザーにはFinder上のコンテクストメニューは認知されているものの、メニューバーに表示するスクリプトメニューの認知度が低い
(5)メニューに入れるScriptをオンラインアップデートできない

というところでしょうか。

Script Menuは、(1)〜(5)すべて満たしていません(その後のアップデートで(3)ができるようになった。ただし、対応OSバージョンが不明確)
Fast Scriptでは、(2)〜(5)を満たしていません(1ができるのはえらい)。
Service Stationは、(1)〜(3)(5)を満たしていません。
Event Scriptは、(1)〜(5)すべて満たしていません。

とくに、(2)(3)(5)が問題だと思っています。各アプリケーション内蔵のスクリプトメニューも同様です。

メニューに入れてフォルダ分けしているとはいえ、名前だけ見てもそのScriptがどのような内容であったかを覚えていられないと思います。その内容を思い出すために(2)が必要です。

メインスレッド実行してくれないと実行できないScriptが存在しているため、(3)は欠かせません。

Scriptを自分で書いてメニューに入れられるユーザーがそれほどいないため、提供側がScript内容を配信してアップデートできるようにする必要があると思います。

ただし、Mac App Store経由で配信すると、(5)のような運用は許されません。そのため、Mac App Store以外で配信する形にしなければなりません。

さらに、メニュー内容の多言語対応も問題です。英語環境では英語で、日本語環境では日本語で表示されてほしいところです。

大事なのは、内容(Script)側であってスクリプトメニューアプリケーション側ではないのでは? というのが自分の考えです。

Posted in news | Tagged Script Menu | Leave a comment

新刊電子書籍「Cocoa Scripting Course #4 System Hardware & Software Information」を刊行

Posted on 3月 28, 2022 by Takaaki Naganoya

電子書籍新刊「Cocoa Scripting Course #4 System Hardware & Software Information」を刊行しました。全561ページ、添付サンプルScript数665本となっています。最新のmacOS 12とM1 Mac環境での検証・対応を行なっています。

→ 販売ページ

AppleがmacOS 11上で作った「M1上でAppleScript+Cocoaの処理が遅くなるバグ」に邪魔され、これを解消するようテストやバグレポートを重ね、macOS 12側で問題が解決されました。こうした状況を受けてようやく本シリーズの刊行に復帰できました。

監修のedama2氏をはじめ、LateNight SoftwareのMark Alldrit、Shane Stanley、収録・紹介に許可をいただいた各種Frameworkの作者の皆様に感謝申し上げます。

Posted in Books news | Leave a comment

Post navigation

  • Older posts
  • Newer posts

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

Google Search

Popular posts

  • macOS 26, Tahoe
  • Script Debuggerの開発と販売が2025年に終了
  • 【続報】macOS 15.5で特定ファイル名パターンのfileをaliasにcastすると100%クラッシュするバグ
  • NSObjectのクラス名を取得 v2.1
  • Xcode上のAppleScriptObjCのプログラムから、Xcodeのログ欄へのメッセージ出力を実行
  • Script Debuggerがフリーダウンロードで提供されることに
  • AppleScript Dropletのバグっぽい動作が「復活」(macOS 15.5β)
  • macOS 26, 15.5でShortcuts.app「AppleScriptを実行」アクションのバグが修正される
  • Dock Menu
  • 執筆中:AppleScript最新リファレンスver2.8対応(macOS 15対応アップデート)
  • Applicationのactivateを記録する v2
  • Appleに買収されたPixelmator ProがAppleとしての初アップデート
  • Claris FileMaker Pro 2025(v22)がリリースされた
  • Numbersで選択範囲のdateの年を+1する
  • macOS 15.5beta5(24F74)でaliasのキャスティングバグが修正された???
  • 複数の重複検出ルーチンを順次速度計測
  • シンプルな文字置換
  • NaturalLanguage.frameworkを用いて日本語テキストの形態素解析を行う
  • AS書類を書式で分解して再構成
  • スタイルつきテキストでスタイルつきテキストを検索 v1.1

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 (166) 26.0savvy (36) CotEditor (67) 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 (78) Pages (58) 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)
  • 未分類

アーカイブ

  • 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