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

カテゴリー: Bug

macOS 10.14にchoose fileのバグ?

Posted on 12月 13, 2019 by Takaaki Naganoya

macOS史上最低、どうしてあの状態でリリースしたのか理解に苦しむmacOS 10.13の後なので、どうしてもかなり贔屓目に見てしまうmacOS 10.14ですが、やはりバグはありました。

2019/12/13追記 デフォルト設定値の問題で、階層表示は行えることを確認しました。

choose file with showing package contents

このコマンドを実行した場合には、パッケージ内容を表示しつつパッケージ内のファイルを選択できるはずですが、macOS 10.14ではこれがパッケージ内のファイルは選択できるものの、階層表示できていません。こんなchoose file with showing package contentsの挙動なんて見たことがありません。


▲macOS 10.13.6上の動作


▲macOS 10.14.6上の動作。一応、バンドルを選択するとその内部のフォルダに移動することは可能だが、階層表示されない


▲macOS 10.15.2上の動作

追記 edama2さんから「こちらではそういうことはないよ?」というツッコミを送っていただきました。再度確認したところ、choose fileダイアログの項目分けの初期値がmacOS 10.14では「なし」ではなく「名前」になっているために、自分のデフォルト設定では階層表示されていなかったようです。


▲自分のmacOS 10.14.6環境の初期状態。項目分けが「名前」になっていた


▲自分のmacOS 10.14.6環境でも、項目分けを「なし」に変更すると階層表示された

Posted in Bug dialog file | Tagged 10.14savvy | Leave a comment

macOS 10.15.2でPDFViewでオープン中のPDFで発生したURLリンクバグが新たなバグを呼ぶ

Posted on 12月 11, 2019 by Takaaki Naganoya

macOS 10.15には、PDFViewでオープン中のPDFで、URLリンクをクリックして発生したURLイベントが正常にデコードされないというバグがあります。本日リリースされたmacOS 10.15.2アップデートでもまともに修正されていないため、その内容についての解説です。

# BugReporter経由でバグ報告ずみです。が、、、

macOS 10.15のPDFViewのバグ

macOS 10.15.0で観測されたこのバグは、URL自体がURLエンコードされたまま、デコードされずにアプリケーションに伝わるというものでした。httpなどのメジャーなURLスキームを持つURL以外のマイナーなもの、具体的にいえば「applescript://」URLスキームで失敗することを確認しています。

「applescript://」URLスキームは本Blog掲載のプログラムリストすべてに添付しているURLリンクで、プログラムリスト末尾のリンクをクリックすると内容がスクリプトエディタに転送される仕組みです。

つまり、WkWebViewなりWebViewなりの、WebView系のGUI部品から「applescript://」URLイベントが発生した場合には、macOS 10.15上でも正常に処理できています。

これが、PDFView上では正常に(従来のmacOSと同様には)動作していないというのがmacOS 10.15上のバグです。

macOS 10.15.2でバグが変質

では、macOS 10.15.2 Updateでこれが修正されたかといえば、

 ・まったくデコードされないでデータが転送される、という不具合はなくなった
 ・しかし、デコードの仕方に問題が残っている。3通りの反応が返ってくる、「頭の悪い修正」が行われた

  CASE 1:正常にデコードされて伝わる(内容はすべて伝わる)
  CASE 2:デコードされた内容が途中で途切れる
  CASE 3:何も伝わらない

CASE 1の反応が返ってくるものは毎回CASE 1の反応が返ります。同様に、CASE 2の反応が返ってくるものは毎回CASE 2。CASE 3も同様です。なにやら、URLデコードした文字列の内容に応じて「データが欠損する」という新たな不具合が発生するようです。

自助努力によるPDFViewのバグ回避は?

OSの基礎的な部分ではなく、PDFViewというバグ連発の部品で発生している状況です。Appleの社内は縦割り組織で、社員が他のチームにアクセスする権限はありません。そのため、コアOSチームとPDFViewのチーム(チーム名は具体的には知りません)が連携する可能性には期待できません。WebViewでは発生していないことから、PDFViewが単独で何かの実装を行なったときにバグを発生させたものと見ています。

macOS 10.15のPDFViewにおけるURLリンクのクリックで発生するバグを回避するために、自前で簡易PDFビューワーを作成しましたが、PDFView上でオープンしたPDF内のURLリンクをクリックした時点でデータが欠損(CASE 2、3)しているため、リンククリックから発生するイベントを横取りして何らかの処理を行なっても補えません。

Appleが従来どおりの実装を行わず、正常に動作しない不具合やバグばかり新たに作り出す理由はわかりませんが、Appleには不用意にバグを追加することはできても、「そのバグが何であるかを認識し、修正する能力がない」と考えたほうがよいでしょう。

CASE 2の「途中で途切れる」パターンについては、現在表示中のページ(currentPage=単独ページはScripting Bridgeのバグにより取得できないので、見開きページがどれかという判定に)上のすべてのURLリンクを取得し、デコードした内容をすべて取り出して前方一致検索で該当すると思われる内容をスクリプトエディタに転送することは不可能ではありません。

不可能ではないものの、途中で途切れたデータを単なる前方一致検索するだけでは同一のものが複数検出される可能性もあり、ユーザーに対して「あなたがクリックした内容は以下のうちのどれですか?」と間抜けな問い合わせを行う必要が発生してしまいます。

CASE 3についてはお手上げです。何かがクリックされたことしかわかりません。「PDF上のURLリンクのクリックを受信する」という動作には一切期待しないほうがよさそうです。

PDFView上のリンククリック挙動修正に期待できない

PDF上のURLリンクをクリックするとmacOS 10.15のバグに遭遇してしまうので、「applescript://」URLをクリックしても別の機能にフォワードしたほうがよいでしょう。

PDFViewで表示中のPDFの見開きページがどこかはわかるので、そのページ範囲にある「applescript://」URLリンクをすべて取り出し、その内容もデコードして、すべてスクリプトエディタに転送するのがよいでしょう。

最初のバグ状態よりも状況が悪化しているような気もしますが、どんなもんなんでしょう?

Posted in Bug URL | Tagged 10.15savvy PDFView | Leave a comment

macOS 10.15上のPhotos.app経由でインポートした写真のファイル名が大文字に強制変更される

Posted on 12月 3, 2019 by Takaaki Naganoya

macOS 10.15は毎日新たな(よくない方の)発見があって驚かされます。そんなmacOS 10.15上のPhotos.appでインポートした写真のファイル名に含まれる英小文字がすべて英大文字に変更されるというバグが報告されています。

macOS 10.14.6上のPhotos.app経由で同じ写真をインポートすると、iCloud経由でシンクロされてmacOS 10.15.1上のPhotos.appに配信されてもファイル名はオリジナルのままです。

Posted in Bug | Tagged 10.15savvy Photos | Leave a comment

macOS標準装備のAppleScript専用補助アプリケーション「Image Events」がデフォルトではファイルにアクセスできない設定に

Posted on 12月 1, 2019 by Takaaki Naganoya

macOSには、GUIをもたないAppleScript専用の補助アプリケーションが標準装備されていますが、macOS 10.15になって正常に(期待通りに)動作しない状態でリリースされているので注意が必要というお話です。

macOSには、「●●Scripting」といったClassic Mac OSから引き継いだツール群と、「●●Events」といったMac OS X移行時に搭載されたAppleScriptからの呼び出し専用のツール群が、/System/Library/CoreServicesフォルダに入っています。

  10.4 10.5 10.6 10.7 10.8 10.9 10.10 10.11 10.12 10.13 10.14 10.15 11.0
ColorSyncScripting ⬛︎ ⬛︎            
Database Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎
Digital Hub Scripting ⬛︎ ⬛︎            
FontSync Scripting ⬛︎ ⬛︎            
Image Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ★ ★
Keychain Scripting ⬛︎ ⬛︎ ⬛︎          
System Events ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎ ⬛︎
URL Access Scripting ⬛︎ ⬛︎ ⬛︎          

▲「最新事情がわかるAppleScript 10大最新技術 Ver.2.0」より抜粋(36ページ掲載)、最新OSに合わせて改定

最新版のmacOS 10.15でもSystem Events、Image Events、Database Eventsの3つが残っており、System Eventsはよく使われています。

Image Eventsはごくまれに、Database Eventsに至ってはほぼ実戦で利用したことがありませんが、存在していることは確認しています。

そんなImage Eventsが、macOS 10.15上でデフォルト設定ではユーザー指定の画像ファイルにアクセスできなくなっていることが確認されています。

システム環境設定の「セキュリティとプライバシー」>「セキュリティ」>「フルディスクアクセス」にImage Eventsを登録すればアクセスできるようにはなりますが、「セキュリティ強化」の美名のもとに機能の自家中毒を起こしている状態といえるでしょう。

一方、Database Eventsではそんなことはなく、Database Events経由で作成したデータベースに問題なくアクセスできますし、Database Eventsの唯一にして最大の機能である「AppleScriptのフィルタ参照でデータベースのしぼりこみ検索を行う」機能も健在です(それしかできないので)。

AppleScriptによる画像処理は、ICCプロファイルを重視してAdobe Photoshopで行うか、RGB画像をスピーディーにCocoa Frameworkで処理するかの方向に二分されており、Image Eventsで行うような基礎的な画像処理はCocoa Frameworkで肩代わりされる方向にあります。Image Eventsは入門者向けのなんちゃって画像処理レベルで用いられるものであり、個人的にはほとんど利用していません。事情を知らない入門者がハマる落とし穴が新しく1つ作られたといったところでしょうか。


▲openコマンドの引数はfile(実際にはalias)と書かれているが、furlで渡さないとオープンされないImage Events


▲SQLiteラッパーで、素朴すぎて機能がまったく不明だったDatabase Events。まさかフィルタ参照で絞り込みを行う専用ツールだったとは(ソート命令も検索命令もない謎仕様)

Posted in Bug Security | Tagged 10.15savvy Database Events Image Events | 2 Comments

Appleがいまだに直さない致命的なPDFViewのバグに対処v2

Posted on 11月 22, 2019 by Takaaki Naganoya

macOS 10.13のBetaの時にはなかったのに、Release版がバグだらけでリリース。PDFViewについて多大なる被害を受けております。PDFViewをScripting Bridge経由で使うと、macOS 10.14も10.15も状況は同じです。きちんと動かないので、仕様と言い切ることは難しいところでしょう。未修正のバグが放置されているという状況です。

Developper Supportに報告しても返答も何もないので、PDFViewのScripting Bridgeまわりはバグだらけのまま直すつもりもないのでしょう。Xcode上でプログラムを組みだすと、腹の立つことのオンパレードです。

AppleのDevelopperライセンスの延長時期がやってくると、日頃からバグだらけでOSをリリースするわバグは直さないわで、嫌がらせを受け続けているのになんでこれを契約延長しなくてはならないのか理解に苦しみます。

Apple系のMailing Listでは主流ともいえるCocoa-Dev ML上でもAppleのあり方に疑問を呈したり文句を(ていねいなお言葉で)述べる投稿がここ数週間(macOS 10.15のリリース以降)激増している今日このごろです。

いまいちどPDFViewまわりを確認してみると、PDFViewのcurrentPageを取得できない未修正の特大バグに続いて、goToPreviousPage、goToNextPageも効きません。つまり、現在表示中のページの取得も、前後ページへの移動もできないという状況です。


▲まともにオブジェクトを返してこないcurrentPage

とりあえず、Xcode上でヘッダーファイル「PDFView.h」を確認していると、currentPageのかわりになりそうなものを見つけました。それが、visiblePages。PDFView上で表示中のページを(複数)返してくるわけで、単ページ表示時にはなんとかこれが使えるかも? ということで試してみました。

–> Download pdfviewAgainstAppleBug (Xcode Project)


▲currentPageのかわりに使えそうなvisiblePages。こっちは機能している

これが使えたので応用し、かなり遠回りな処理にはなりますが、表示中のページの前後移動もできるようにしてみました。

ただ、PDFViewをもとにしたクリックスルーなPDFViewを使ってみると、いまひとつ想定どおりに動作してくれません。まだいろいろ試してみる必要がありそうです。
→ クリックスルーPDFViewは結局動作するようになり、Double PDF v2に実装できました

これらのほか、PDFViewはページ変更時のイベントやドキュメント変更時のイベントが送信されないなど、苦労させられまくりです。

Posted in Bug GUI PDF | Tagged 10.14savvy 10.15savvy PDFView | Leave a comment

個人的に腹がたったmacOS/AppleScriptのバグ・ワースト10

Posted on 11月 2, 2019 by Takaaki Naganoya

歴代のmacOS自体やAppleScriptの処理系で腹が立ったバグについてまとめてみましょう。腹の立ったOSのバージョンでいえばmacOS 10.13が歴代でダントツの1位ですが、10.15もリリースされる前から「これはひどい」「10.13と同じぐらいひどい」とわかっていたので、10.14.6を選択。

10個にしぼりこむことがたいへんに難しかったですし、未修正の問題などもあり非常に腹立たしいかぎりです。たぶん、ワースト3以下は僅差だと思います。

Mac OS X 10.3でディスク暗号化機能の「FileVault」が登場したときには、野生のカンで「これは使ってはいけない機能だ」と様子見していたところ、見事に「FileVaultをオンにしたホームディレクトリ下のファイルにAppleScriptからアクセスできないバグがある」ことが発覚。以来、これをオンにしたことがありません(最近でも、macOS 10.15でFileVaultをオンにしているとMac mini 2018に接続したeGPUから出力できないとか。なかなか信用できません)。

1位:Mac OS X 10.3 “is in”演算子が動かないバグ(AppleScript)【修正済み】

こんな基礎的な演算子でバグ作られた日には何もできません。とくに、is in演算子はデータの「ゆらぎ吸収」処理に使いまくっているので、WWDCにハリセン持って担当者をブン殴りに行こうかと真剣に悩みました。

2位:macOS 10.13〜 PDFViewのcurrentPageを取得するとおかしな値が返ってくるバグ(Bug Reportしても直らない。殺意を覚える)(Scripting Bridge)【未修正】

これのせいで、自分のMac App Storeにアップしたアプリケーションが動かなくなりましたわ。ひどい。ひどすぎる。しかも、ちゃんとDevelopper Supportに連絡しても返事ひとつなく、修正もされません。Developer Support、仕事してませんよね。

# Developper Support、ほんっとになんにもしない。あの部署、何のためにあるんだろう? 今度、インシデントを消費して「じゃあ逆に、君たちは何をしてくれやがる部署ですか? 後学のために教えてくださいませ」と聞いてみようか

3位:OS X 10.9 ntpのシンクロが狂うバグ(OS)【修正済み】

当時、Mac App Storeに出す時計アプリを作ってたんですが、これのせいで時計が合わずに冷や汗かかされていました。まさかOSのバグとは、、、、おかげでアプリはお蔵入りしてしまいました。

4位:macOS 10.12〜 Input Methodのバグか何かで、ファイル名に不可視文字が混入するケースがあり、混入するとファイル名の文字列に追記するとエラーに(OS、日本語環境)【未修正】

これは、レポートもしていますし、波及範囲が広いので大問題なのですが、直っていませんね。認識すらしていないんじゃないでしょうか。

5位:Mac OS X 10.0〜10.4 File Pathの文字エンコーディングが変で日本語ファイルパスの扱いに慎重になる必要があったバグ(OS、AppleScript)【修正済み】

ファイルパスをas stringしてからas unicode textでcastさせられたりと、煮湯を飲まされていました。10.5で根本的に修正されたものの、10.5で根本的な修正を行うまで、問題が放置されっぱなし(こういうの多いなー)。

6位:Mac OS X 10.0〜10.4 display dialogで日本語表示を行うさいに、国際化対応アプリケーションへのtellブロック内で実行しないと文字化けするバグ(OS、AppleScript)【修正済み】

さすがに困って担当者に問い合わせて回避方法は教えてもらいましたが、そういう付け焼き刃的な回避方法を知らせる前につぶしてほしいと感じるものでした。

7位:Mac OS X 10.4、Script MenuがSystem Eventsの管轄下にあったため、Script Menuから呼び出したScript内でSystem Eventsの機能を呼び出すと実行が止まるバグ(AppleScript)【修正済み】

Mail.appのメッセージ仕分けBot Scriptがこれにヒットしてひどい目に遭いました。毎日使っているものなので、とても大きなダメージを喰らいました。Mac OS X 10.5で修正されました。

8位:OS X 10.10、Cocoa Objectsの実数値をASにcastすると小数点以下が無視されるバグ(Scripting Bridge)【修正済み】

これもひどかったですね。Shaneが対処のためのFrameworkやライブラリを用意しなかったら、いまほどCocoaの機能が利用されていなかったと思います。このバグはmacOS 10.11で修正されました。

9位:macOS 10.12、AppleScript Dropletにドロップしたファイルで、ファイル拡張属性(Xattr)のcom.apple.quarantineがついている場合には処理されないバグ(放置、未修正)(OS、AppleScript)【未修正】

無責任さここに極まれりといったところです。Core OSとAppleScriptの処理系との間で仕様のすりあわせが行われておらず、チーム間でぜんぜん連携が取れていない(というよりも、チーム間で垣根を超えて折衝する権限がないっぽい)、現在のAppleの社内体勢そのものに問題があるんでしょう。これも、対処方法が一応は確立しているものの、たまりません。

10位:macOS 10.13、NSRectがレコードではなくリストで返ってくるように(告知なしで)変更される(Scripting Bridge)【未修正】

なんなんでしょうね、コレ。作業量が増えて腹が立つんですが、個人的にはSwiftのアップデートに合わせてAPI側の仕様を変えてしまったんじゃないんかとにらんでいます。

Posted in Bug | Leave a comment

macOS 10.15でPDFView経由のURLイベントが正しくデコードされないバグ

Posted on 10月 31, 2019 by Takaaki Naganoya

macOS 10.15には上から下まで機能不全やバグが存在しており、とても常用に堪える仕上がりではありません。2019年10月に1年かけてのPublic β公開がはじまったという印象です(今回、Beta段階ではまともに動かず動作確認にすらなりませんでした)。

そんなmacOS 10.15に激烈なバグを発見。PDFView経由で発生したURLイベントが正しくデコードされないというバグです。httpやhttpsといったURL Eventでは発生しないものの、「applescript://」スキームのURLイベントで発生しています。

–> View movie of macOS 10.15 URL event bug

このため、Piyomaru Softwareが刊行している既存の電子ブックのScript LinkもmacOS 10.15環境では正しくスクリプトエディタに転送されません。現在作成中の新刊作成途中にmacOS 10.15のバグに直面。


▲macOS 10.15のPDFView上でapplescript://リンク入りのURLをクリックすると、内容が正しくデコードされずにスクリプトエディタに転送される

Skimで「applescript://」リンク入りのPDFをブラウズし、スクリプトリンクをクリックすると、Script Editorに正しく転送されません(URLデコード不良)。

macOS 10.15のバグなのかSkimのバグなのかを検証するために、わざわざPDFViewを貼り付けた最低限度のPDFビューワーアプリケーションを(AppleScriptで)作成し、PDFViewからのURLリンククリックに対してはSkimと同様の結果になる(=macOS 10.15側のバグ)であることを確認しています。

じゃあ、macOS 10.15のSafariでapplescript:// URL Link(本ブログ掲載のプログラムリスト末尾のリンク)はどうなのか? といえば、こちらは正しくSafari→デフォルトのScriptエディタ(スクリプトエディタとかScript Debuggerとか)に転送されます。問題はありません。Betaの時からさんざんクリックして確認していました。

なので、PDF中のapplescript://リンクの内容を正しくデコードするPDFリーダー「PiyoReader」を作ってみました。AppleがmacOS 10.15のこのバグを修正するのか(少なくとも10.16まで直らないと思います)不明ですが、これに対処するためのPDFリーダーです。

Mac App Storeに出す苦労を考えると、BOOTHあたりでオンライン販売するかといったところでしょうか(Piyomaru Software内で相談中)。
→ 急遽作ったので、売り物になるほどの仕上がりではなく(だいたい、1日で仕上げてもSkimを超える出来になりません)、フリー配布するしかないんじゃないの? というところです。

Posted in Bug | Tagged 10.15savvy | 6 Comments

iWork Appsがアップデート、表の新規作成時バグは未修正

Posted on 10月 2, 2019 by Takaaki Naganoya

iWork Apps(Keynote、Pages、Numbers)がアップデートし、Keynote v9.2、Pages v8.2、Numbers v6.2になりました。

KeynoteとNumbersで表の新規作成時に特定のセル数でエラーになる(ほとんどのケースでエラーになる)バグが修正されていないことを確認しました。Pagesは未確認です。

Pages v8.2で表の新規作成を試してみたところ、Pagesでは行数や桁数を指定しても問題なく作成できました。

tell application "Pages"
  tell front document
    tell page 1
      make new table at beginning with properties {row count:20, column count:5, header row count:2, header column count:2, position:{60, 80}}
    end tell
  end tell
end tell

★Click Here to Open This Script 

Numbersでimageのposition X座標による制御ができないバグはNumbers v6.2で修正されたことを確認しました。

Posted in Bug | Tagged Keynote Numbers Pages | Leave a comment

MacDownのopenコマンドで.mdファイルをオープンできない問題

Posted on 9月 18, 2019 by Takaaki Naganoya

メイン環境をmacOS 10.14に移行してみたら、MarkdownエディタのMacDownがopenコマンドでファイルをオープンできなくなっていました。かなり困ります。

ただ、この問題には思い当たる節がありました。MacDownのopenコマンドは仕様がおかしく、「バグっぽい実装でたまたま動いていたものが、OS側の動作が変わって動かなくなった」ものと推測。

MacDownのopenコマンドはfileのlistを要求してくるので、わざわざ、

set aFile to choose file of type {"net.daringfireball.markdown"}

tell application "MacDown"
	open {aFile}
end tell

のような記述が求められました。アプリケーション側の実装に合わせて書くのがScripterなので、仕方なくこういう記述をしてきましたが、納得はしていませんでした。

MacDownのsdefファイルを調べてみたところ、openコマンドのパラメータにlist=”yes”の記述があったので、これを削除。

<command name="open" code="aevtodoc" description="Open a document.">
 <direct-parameter description="The file to be opened.">
  <type type="file"/>
 </direct-parameter>
</command>

のように手元のMacDownのsdefの内容を書き換えてみたら、

set aFile to choose file of type {"net.daringfireball.markdown"}

tell application "MacDown"
	open aFile
end tell

リストで渡さないように書くと、macOS 10.14上でも問題なくAppleScriptから.mdファイルのオープンを実行できるようになりました。

Posted in Bug Markdown | Tagged 10.14savvy MacDown | Leave a comment

Numbersにも画期的なバグ〜特定のセルサイズの表を作るとエラーに

Posted on 8月 31, 2019 by Takaaki Naganoya

Numbers v6.1に、Keynote v9.1と同様の表作成バグが存在していることを確認しました。

Numbers v6.2でも修正されていないことを確認しました。

特定行数の表の新規作成を作成するとエラーになるという、「わざとやってないと出ないエラー」です。

それとも、何か型変換のミスとかそういう程度のひくーーいバグを作ったんじゃないかと。

とりあえず、サイズを指定せずにtableを作成して、あとから行数とカラム数を変更してもエラーになるので、回避方法がほぼありません(ーー;

データをCSV書き出ししておいてCSVをNumbersでオープンして新規に作成されたドキュメント上の表をコピーしてくる、ぐらいの回避策は考えないでもありませんが、、、、、何のためにコードを書いているのかよくわからなくなります(ーー;

探してみると、r/oではない属性値のオブジェクトに数値を突っ込んでもGUI側に反映されないなど、パラメータがいまひとつ正しく解釈されていない雰囲気が濃厚です。たとえば、active sheet上にimageを配置して、AppleScript側からpositionを変更することでY座標については制御できるものの、X座標の変更が行えていません、、、、

→ imageのpositionでX座標が制御できないバグについては、Numbers v6.2で修正されたことを確認しました

tell application "Numbers"
  tell front document
    tell active sheet
      tell image 1
        set position to {0, 0}
      end tell
    end tell
  end tell
end tell

★Click Here to Open This Script 

AppleScript名:Numbers書類上に表を新規作成.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/08/31
—
–  Copyright © 2019 jp.piyomarusoft, All Rights Reserved
—

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

set aWidth to 3
set aHeight to 10

tell application "Numbers"
  set aDoc to make new document
  
tell aDoc
    tell active sheet
      set tRes to make new table with properties {row count:aHeight, column count:aWidth}
    end tell
  end tell
end tell

★Click Here to Open This Script 

Posted in Bug | Tagged 10.13savvy 10.14savvy Numbers | 3 Comments

Keynoteに画期的なバグ〜特定のセルサイズの表を作るとエラーに

Posted on 8月 9, 2019 by Takaaki Naganoya

Keynote v9.1+macOS 10.14.6上でAppleScriptのプログラムを組んでいたら「行数が正しくない」といったエラーになるので、徹底的に調べてみました。

Keynote v9.2でも修正されていないことを確認しました。
Keynote v9.2.1でも修正されていないことを確認しました。


▲5行の表を作ろうとするとエラー。4行でも6行でも大丈夫なのに5行の表を作るとエラー

tell application "Keynote"
  tell front document
    tell current slide
      set aTable to make new table with properties {header column count:0, header row count:0, row count:5, column count:3}

    end tell
  end tell
end tell

★Click Here to Open This Script 

すると、なんと「特定のセルサイズ(行数、列数)の表を作成させた場合にのみエラーになる」ことが判明。

make new table with propertiesコマンドで行/列を指定して作成するとエラーになる組み合わせは以下のとおり。

{{xNum:2, yNum:5}, {xNum:3, yNum:5}, {xNum:4, yNum:2}, {xNum:4, yNum:3}, {xNum:4, yNum:4}, {xNum:4, yNum:5}, {xNum:4, yNum:6}, {xNum:4, yNum:7}, {xNum:4, yNum:8}, {xNum:4, yNum:9}, {xNum:4, yNum:10}, {xNum:4, yNum:11}, {xNum:4, yNum:12}, {xNum:4, yNum:13}, {xNum:4, yNum:14}, {xNum:4, yNum:15}, {xNum:4, yNum:16}, {xNum:4, yNum:17}, {xNum:4, yNum:18}, {xNum:4, yNum:19}, {xNum:4, yNum:20}, {xNum:4, yNum:21}, {xNum:4, yNum:22}, {xNum:4, yNum:23}, {xNum:4, yNum:24}, {xNum:4, yNum:25}, {xNum:4, yNum:26}, {xNum:4, yNum:27}, {xNum:4, yNum:28}, {xNum:4, yNum:29}, {xNum:4, yNum:30}, {xNum:5, yNum:5}, {xNum:6, yNum:5}, {xNum:7, yNum:5}, {xNum:8, yNum:5}, {xNum:9, yNum:5}, {xNum:10, yNum:5}}

さらに、上記サイズでエラー発生時に追試を行い、安全なサイズの表(3×3)を作成したあとにリサイズを行ってもエラーになるのが、

{xNum:3, yNum:5}, {xNum:4, yNum:3}

の組み合わせであるようです。なんでやねーん、と関西人でもないのにツッコンでしまいました。いやー、作ろうとしないとできないバグなんでは?

特定サイズの表をAppleScript側から作らせないようにしているのでしょうか? とても不思議なパターンのバグです。思わず「わざとなのか?」と思ってしまったほどです。何かのイースターエッグなんでしょうか、とても不愉快なイースターエッグですが。

Core i5のマシンでも追試を行ってみて、同様にエラーが再現することを確認しました。Xeonでのみ発生するエラーということではないようです(それはそれでちょっと見てみたい)。

追試で、Keynote v8.1+macOS 10.12.6上で同じことをやってみたら、とくにエラーにはなりませんでした。

AppleScript名:keynoteTableTest.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2019/08/09
—
–  Copyright © 2019 Piyomaru Software, All Rights Reserved
—

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

set erList1 to {}
set erList2 to {}

tell application "Keynote"
  make new document
end tell

repeat with x from 2 to 10
  repeat with y from 2 to 30
    tell application "Keynote"
      tell front document
        tell current slide
          delete every table
          
set errorF to false
          
          
–First trial (make new table command)
          
try
            set aTable to make new table with properties {header column count:0, header row count:0, row count:y, column count:x}
          on error
            set errorF to true
            
set the end of erList1 to {xNum:x, yNum:y}
          end try
          
          
if errorF = true then
            –Second trial (Make safe size table and change its size after generation)
            
delete every table
            
set aTable to make new table with properties {header column count:0, header row count:0, row count:3, column count:3}
            
            
try
              set column count of aTable to y
              
set row count of aTable to x
            on error
              set the end of erList2 to {xNum:x, yNum:y}
            end try
            
          end if
          
        end tell
      end tell
    end tell
  end repeat
end repeat

return {erList1, erList2}

★Click Here to Open This Script 

Posted in Bug | Tagged 10.14savvy Keynote | 3 Comments

Keynoteのexport optionsにバグ

Posted on 5月 14, 2019 by Takaaki Naganoya

Keynoteのdocumentをmovieに書き出す(export)際に指定するオプションにバグがあることに気づきました。

AppleScript Users ML上でNigel Garvey氏に検証に付き合っていただきました。同氏にはこの場を借りて感謝の言葉を申し上げる次第です。

確認したのはv8.3および最新のv9.0.2ですが、実際にはv7.1で発生した変更によって起こったものと推測されています。

上記のように、手元のアプリケーションは(ほぼ)すべてのバージョンについてAppleScript用語辞書をHTMLに書き出してあり、diffにより差分チェックを行なっています。赤いタグ(ラベル)がついているのが変更があったバージョンで、この履歴をたどるとv7.0のexport optionsは、

movie format small / medium / large -- format for exported movie.

となっていましたが、Keynote v7.1において、

movie format 360p / 540p / 720p / 1080p / 2160p / native size -- format for exported movie.

と変更されました。実際にこれらのオプションを指定すると、構文確認時にエラーになります。AppleScriptで数値で始まる予約語(例:1080p)や演算記号を含む予約語(例:C++)は使えないので、そもそも言語仕様的に無理なものをsdefに定義しています。Appleの担当者の頭が沸いているとしか思えません。素人以下です。

それぞれ、small / medium / largeというsynonymが定義されているため、{movie format: large}などと入力して構文確認できますが、synonymでしかないため元のキーワードにフォワードされます。結果として、{movie format: 720p} と解釈され、エラーになります。

これは、AppleScriptの処理系の問題ではなくKeynote側の実装が間違っているためです(一切動作確認をしていないんでしょう)。

解決策はとくにありませんが、オリジナルサイズを指定する「native size」オプションだけはエラーにならないため、同オプションを指定するしかないと思います。

AppleScript名:KeynoteからのMovie書き出し
set targetFileHFSPath to (choose file name) as string –かならずファイル拡張子に「.m4v」を指定する必要がある

with timeout of 3600 seconds
  tell application "Keynote"
    export front document to file targetFileHFSPath as QuickTime movie with properties {movie format:native size}
  end tell
end timeout

★Click Here to Open This Script 

Posted in Bug | Tagged 10.11savvy 10.12savvy 10.13savvy 10.14savvy Keynote | 1 Comment

macOS 10.14のバグ? アクセシビリティ認証

Posted on 2月 10, 2019 by Takaaki Naganoya

macOS 10.14.4Betaを使っていて遭遇したトラブルというかバグのような挙動なのですが、「システム環境設定」の「セキュリティーとプライバシー」>「プライバシー」>「アクセシビリティ」の項目。これは、Scripterにはおなじみの「GUI Scriptingの許可」を行う設定項目です。

# 本件については、最新のmacOS 10.14.6+同OSで利用可能な最新のXcode 11.3.1の組み合わせで、後述のように回避できるようになったことを確認しています

ここに、同一名称で異なるバージョン(バージョン番号の大きいもの=新バージョン)のアプリケーションが登録されない、という不具合です。

たとえば、v1.0のappletを登録しておいて、v2.0のappletを登録しようとしても、すでにv1.0が登録されているので追加登録できないし、いったん登録したものを削除できなかったという状況でした。

この問題のどこが困るかといえば、Xcode上でAppleScriptによるアプリケーションを開発していて、その中でGUI Scriptingを利用しているような場合です。Xcode上でAppleScriptアプリケーションをビルドすると、まず最初に動作確認用にdebugビルドを行うことになりますが、これで1つのバイナリができます。テスト実行時にアクセシビリティ認証を取得して、実行。

次いで、実際に単体で実行する(Xcodeのログ表示にlogコマンドによる表示が出ない)Relaseビルドのバイナリをビルドして実行。debugビルドとは別のバイナリができて、実行してみるとOS側からアクセシビリティ認証が許可されず、実行できないという状況でした。いったんこうなると、debugビルドのバイナリのアクセシビリティ認証を解除してもReleaseビルドを登録して認証することもできず、お手上げの状態でした。

以前、macOS 10.10あたりでこの項目で不可解な挙動が見られたことがありましたが、それが復活したような不安定さを感じます。ただ、テスト機はHDDで運用しているため、設定項目の変更がなかなか反映されないといった独特の挙動が発生することもあり、継続調査は必要だと感じていました。まだ、他のユーザーの環境でも同様の問題が発生するか「裏取り」ができていない状況でもありました。

この問題がmacOS 10.14 Beta Relaseの最中に突然発症したので、当時仕事で作成途中のプログラムがGUI Scriptingを一部で利用しており、現状のままでは10.14対応ができないと顧客に報告する必要が出てきました。

本BlogにアクセスしているクライアントのOSバージョンについてWebサーバーのアクセスlogから調査してみたところ、(自分の当時のメイン環境が10.12ということもありますが)10.12が最多。10.9から10.12にほぼ同じぐらいのクライアントが存在しているもようです。鬼っ子10.13や鬼っ子改の10.14については、アクセスlogに形跡が残っていない(Unknown Version?)としか言いようがありません。10.14は多い可能性もあります。

AppleにはmacOS 10.13でバギーなまま使い物にならない状態のOSをリリースしたという「前科」があり、10.14もその延長線上にあるということから、つねに疑問を持って接しています。

# かくして、macOS 10.14が正式リリースされ、開発には利用していましたが、メイン環境は長らく移行しませんでした。macOS 10.14.6が出た段階で再評価を行い、この問題が解決されていたので移行。当時macOS 10.15が出ていたものの、メールが消えるといった致命的な障害報告があったために、移行できない危険なOSだと判断しました。

[追記]2020/3時点での状況

macOS 10.14.x+Xcodeのプロジェクト内でGUI Scriptingを使ったプログラムの認証や開発が行えたなかった件については、Xcode側の対応が改善されたためか、OS側の対処が改善されたためか、現在では解決されています。

OSバージョン:macOS 10.14.6
Xcodeバージョン:11.3.1

この環境で、「File」>「New」>「Project」>「AppleScript App」のプロジェクトを作成し、中で他のアプリケーションをGUI Scripting経由でコントロールする処理を含むプログラムを書いて、アプリケーションとしてビルドし、OS側のセキュリティ機能と折り合いをつけて動作するようにできています。

Xcode Project側で設定すべき点は2つ。

(1)Info.plistに「Privacy – AppleEvents Sending Usage Description」のエントリを作成する(このエントリの内容の文字列が、アプリケーション初回起動時のセキュリティダイアログで表示されます)

(2)Xcode Projectの「TARGETS」でビルドターゲットを選択し、「Signning & Capabilities」>「All」で「Runtime Exceptions」の「Apple Events」にチェックを入れる

これらの設定を行って、Code Signしてあればビルドして実行すると、初回時にOSのセキュリティダイアログが表示され、そののちにGUI Scriptingの認証ダイアログが表示され、認証後、ビルドしたアプリケーションをいったん終了。

再度ビルド&実行するとOS側の「セキュリティ」認証とGUI Scriptingの(アクセシビリティの)認証が通ってアプリケーションの実行ができました。

Posted in AppleScript Application on Xcode Bug GUI Scripting | Leave a comment

Post navigation

  • Newer posts

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

Google Search

Popular posts

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