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

月: 2022年12月

2022年に書いた価値あるAppleScript

Posted on 12月 27, 2022 by Takaaki Naganoya

2022年に使用していたmacOS:macOS 12→13

毎年行なっている、Piyomaru Softwareが書いたAppleScriptの1年を振り返る記事の2022年版です。

→ 2018年に書いた価値あるAppleScript
→ 2019年に書いた価値あるAppleScript
→ 2020年に書いた価値あるAppleScript
→ 2021年に書いた価値あるAppleScript

2022年も大変な1年でした。macOSやApple純正アプリケーションのバグが発生したり治ったりのジェットコースター状態。macOS 13.0についても「冗談だよね?」という出来で、

 「もう、OSがアップデートされて半年ぐらい待たないとリリース状態にならないのかも?」

と感じるものです。

13.1でずいぶんまともになりましたが、13.1の出来になってからリリースすべきなのでは? というところ。

たいした追加機能がない割にバグがその数十倍もてんこもりについてくるのは、どうなんでしょう? Appleは機能を開発しているのではなく、もはや「いやがらせのための機能」や「新たなバグ」を開発しているメーカーであるように感じます。β版の段階で開発者/ユーザーが検証して「この新たな嫌がらせの機能は納得できない」とフィードバックしないと、延々と嫌がらせのための機能が増えてくるので、油断できません。

macOS 13のシステム設定も、警告音のフォルダにサウンド以外のAppleScript書類を入れても警告音一覧にそれが出てきてしまうので(さすがに再生はできない)初心者が作るへっぽこアプリケーション並みの作りになっていることが見て取れます。

本を書きまくった1年?

今年執筆した書籍はおよそ、41冊。いま書いている「Mail.app Scripting Book With AppleScript」が年内に書きあがれば(無理無理無理無理)42冊。

ピークの4月は1か月間に8冊。3日に1冊のペースで出していました。感想やら何やら事前に読んでいただいているEdama2さんのご協力に感謝しています。本当にありがとうございます。

「基礎テクニック集」は、今年あらたに立ち上げた書籍シリーズで、「こういうのがないとダメなんじゃないか?」という議論の中から生まれた、基礎を重点的に解説する本です。まだ、書いていない積み残したテーマがあるので、続く感じでしょう。

「実践テクニック集」は、前述の「基礎テクニック集」ではおさまりきらない大きなテーマを扱うシリーズとして立ち上げました。「GUI Scripting」はまとめておくべき大きなテーマであり、方向性やノウハウやツールの使い方など(UI Browserなど)を徹底的に紹介しています。

2022年に書いた価値あるAppleScript

そんなわけで、本ばかり書いていたので毎日KeynoteやPagesばかり使っており、これらのアプリケーションを操作するAppleScriptが必要になったら書いて作業を効率化するという繰り返し。本数はそれほど多くないものの、けっこう強力なものがそろっています。

一方で今年書いたAppleScriptで価値あるもの……といったときに、月ごとにリストアップする形式に無理を感じるようになってきたので、毎月1本といった固定形式にせず、適宜リストアップします。

・AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
オブジェクトからデータを取り出すのにデータアクセス文字列で指定するという試みです。この手の仕組みがないと、プログラムが冗長になりがちなので用意してみようかというお話しです。

・Bundle IDで指定したアプリケーションのSDEFからコマンドを抽出テスト(指定コマンドのコマンド属性取り出し)
・Bundle IDで指定したアプリケーションのSDEFからオブジェクトを抽出
・Bundle IDで指定したアプリケーションのSDEFからXPathで指定したClassにアクセス v2
アプリケーション内蔵のAppleScript用語辞書を解釈して、Scriptを自動生成するための試みです。割とできるようになるんじゃないかと思っていますが、まだ基礎実験を行なっているだけの状態です(そういうの多いな!)

・Keynoteの表で選択中のセルの文字列長さを一覧表で表示
自分の書いた本の既刊分の説明文をKeynoteの表に入れ、文字が多いとか少ないといった「ゆらぎ」を調べるためのものです。決められたスペースに入れなくてはならないので、この手の細かい作業は割と発生し、こうした確認用Scriptをいったん作っておけば次回からはきわめて短い時間で作業できます。

・Keynote上でテキストアイテムとn重のシェープの重なりを検出 v2
ある意味、Cocoaの機能とGUIアプリケーションの機能をブレンドした内容で、GUIアプリケーションの機能だけでは実現できなかった処理です。矩形オブジェクトが2重とか3重に重なっている場合に検出するというのは、半透明のオブジェクトを重ねて何かを表現している中で生まれたものです。

・Keynote書類中のスライドのトビラページを推測する
Keynoteのマスターページの名前の分布から扉ページを推測するというものです。自分の作る本の傾向を反映させたもので、どの人でも普遍的に使用できるわけではありませんが、、、。

・RectangleBinPackを用いて2D Bin Packを解く v2.3
2D BinPackは、指定の矩形エリア内に指定の複数のオブジェクトを最適化配置して詰め込むもので、KeynoteのようなGUIアプリケーションに対して実行できるのは、非常に効果的です。

・Safariで表示中のYouTubeムービーのサムネイル画像を取得
本当は指定の再生ポジションのサムネイル画像を取得したかったのですが、まだそこまで研究が進んでいません。

・Keynoteの最前面の書類の現在のスライド上の表オブジェクトの重なり合い(2つ以上対応)を検出 v3
これは、書籍に添付しているコマンド表が重なって配置されるという「事故」から、それを検出するScriptを作成したものです。Keynoteの表オブジェクトだけでなく、他のアプリケーションの他のオブジェクトの重なり合わせも検出できることでしょう。

・書籍フォルダの階層をさかのぼって、ツメに掲載する最大チャプターを推測 v2
Pages書類が入っているフォルダの親フォルダをたどって、そのフォルダに記入されている章の数字から最大のものを計算することで、ツメ(ページ端に記載するインデックス)の大きさを変更するものです。ツメをつけると可読性が上がる本がある一方で、ツメの作成や変更を手作業で行うなんて耐えられません。そういうものこそAppleScriptで自動処理させるべきです。

・リストに入れたテキストで、冒頭に入ったマルつき数字をリナンバーする
丸つき数字のリナンバーは、つまらない内容の割に手間がかかる作業であり、これも手作業を撲滅したい内容の上位に入ってくるものです。

・与えられた自然言語テキストから言語を推測して、指定の性別で、TTSキャラクタを自動選択して読み上げ
この手の処理は、AppleScriptのコマンドレベルで普通にできてほしい内容です。ないので自分で書きましたが、macOS 13でText To SpeechキャラクタのID周りに手が入って、これも書き直さないといけないかもしれません。

・Intel MacとApple Silicon Macの速度差〜画像処理
内容はもちろんタイトルどおりですが、これでM1を集積したM1 ProであるとかM1 Ultraの処理性能がメーカー側が言うほどリニアに向上しているわけではないことがわかりました。つまり、M1よりもそれらの上位CPUの方が「処理が遅くなるものもけっこうある」ということです。ここから、M1世代でM1を集積したMac Proが出たら、相当にM1よりも遅い処理が出てくるのでは? と噂していたものですが、作ってはみたもののキャンセルされたようなので、見立て通りといったところだったのでしょう。

2022年の出来事(macOSのバグ以外)

UI Browser 3の開発と販売が終了し、LateNight Softwareに移管された、というのが1つの大きな流れです。Swiftで書き直されたUI Browser 4についてはgithub上でオープンソースで開発が継続されています。

そして、Font Book.appがMac Catalystのアプリケーションに変更され、それにともなってAppleScript用語辞書が削除されました。これが復活するのかどうかは不明ですが、ここに新たに「Catalyst堕ち」という言葉が爆誕。Mac Catalyst化=機能低下バージョンという方針が明らかになってきました。

今年参加したコンテストはFileMaker Proの「バカスタム App選手権」。これに入賞しています。

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

新発売:CotEditor Scripting Book with AppleScript

Posted on 12月 11, 2022 by Takaaki Naganoya

Piyomaru Software Booksの69冊目。「CotEditor Scripting Book with AppleScript」を発売しました。PDF 343ページ+サンプルScriptZipアーカイブ で構成されています。

→ 販売ページ

アプリケーションのすべてのScriptingをわかりやすく詳細にまとめた徹底解説シリーズの第5弾。

CotEditorは(起動、動作が)速い、うまい、フリー、と3拍子そろった、Macユーザー定番のテキストエディタです。

macOS専用に作られているため、その分、macOSならではの機能を活かす方向に全振りした作りになっています。

そんなCotEditorはもちろんAppleScriptに対応しており、さまざまな作業の部品としてCotEditorを利用したり、CotEditor自体の機能をAppleScriptで追加することもできます。macOS 12以降に対応。

■初級

・スクリプトエディタを起動しよう

スクリプトエディタを起動しよう!
スクリプトエディタのヘルプ
色設定を変えてみよう!
スクリプトを入力してみよう
スクリプトを保存しよう
スクリプトを実行しよう(1/3)
スクリプトを実行しよう(2/3)
セキュリティとプライバシー
プライバシーとセキュリティ(13.x以降)
セキュリティとプライバシー>プライバシー
プライバシーとセキュリティ(macOS 13)

・CotEditorを起動しよう

CotEditorを指定
CotEditor.appを起動
CotEditor.appを終了
CotEditorのAppleScript用語辞書の調べ方
メニュー項目や画面強制操作の調べ方
CotEditorの詳細仕様について

・CotEditor自体の情報を取得しよう

CotEditorの名前を取得
CotEditorのバージョンを取得
CotEditorのプロパティ項目と内容

・オープン中の書類へのアクセス

CotEditorでオープン中の書類へのアクセス
最前面の書類、ウインドウにアクセス
documentの属性情報にアクセス
windowの属性情報にアクセス
ウインドウ関連の操作で「できない」こと

・書類の選択部分へのアクセス

selection=選択中のテキスト
selection自体のプロパティ
selection内容のテキストの取得
selection内容の書き換え
selectionの作成

・書類のスクロールとジャンプ

書類のスクロール①
書類のスクロール②
書類の指定行にジャンプ
書類の乱数行にジャンプ

・ウインドウの操作

ウインドウの属性値へのアクセス
指定ウインドウを最前面に表示
指定ウインドウの表示状態を変更
指定ウインドウをズーム表示
参考:最前面のウインドウをフルスクリーン表示
指定ウインドウのサイズを変更

・CotEditor内蔵コンソールへの文字列出力

コンソールに文字列を出力

・内蔵/OS搭載スクリプトメニューからの操作

2つのScript Menu環境
CotEditor内蔵スクリプトメニュー
macOS搭載標準スクリプトメニュー
各スクリプトメニューの技術仕様

・AppleScriptからCotEditorを操作するパターン

■中級

・ファイルのオープン

ファイルを指定して書類をオープン
複数のファイルを指定して書類をオープン
コラム「CotEditorが使用するパス表現」

・ファイルの保存

書類を指定パスに保存
書類を新規作成して本文を設定して指定パスに保存
保存済み書類に変更が加わっていたら保存

・ファイルのクローズ

書類をクローズ(with saving)
書類をクローズ(without saving)
書類をクローズ(saving ask)
新規書類をクローズ

・各種文字操作(選択範囲の操作)

change case
change kana
change roman width
shift right
shift left
move line up
move line down
sort lines
delete duplicate line
comment out
uncomment
smarten quotes
straighten quotes
smarten dashes
normalize unicode

・各種文字操作(document全体の操作)

find(1/2)
find(2/2)
replace
string

・タブ、改行コードの取り扱い

改行コードの変更タブ幅の変更
文字コードの指定
convert
reinterpret

・書式つきテキスト対応機能

CotEditorの書式つきテキスト対応機能
書式つきテキスト機能にAppleScriptからアクセス

・AppleScript非対応機能を呼び出す

AppleScriptで操作可能な範囲
GUI Scripting:メニューなどを強制操作①
GUI Scripting:メニューなどを強制操作②
GUI Scripting:メニューへのアクセス
指定ウインドウを最前面に移動

・プリントアウト

CotEditorからの印刷出力(macOS 13)
AppleScriptによるプリントアウト
GUI Scriptingによるプリントアウト①
GUI Scriptingによるプリントアウト②
GUI Scriptingによるプリントアウト③
GUI Scriptingによるプリントアウト④
GUI Scriptingによるプリントアウト⑤

■上級

正規表現
正規表現が使えるAppleScriptコマンド
findコマンド+正規表現(GUI側との対応)
replaceコマンド+正規表現(GUI側との対応)
replace サンプル①
replace サンプル②
replace サンプル③
replace サンプル④

・オープン時に縦/横書きを強制できる書類仕様

xattrコマンドで強制的に縦書き表示

・文字数のカウント

CotEditorの文字数カウント機能
AppleScriptの文字カウント

・内蔵スクリプトメニューの独自仕様

フォルダ階層構造がそのまま反映される
内蔵スクリプトメニューの独自機能
メニュー上の並び順を指定
メニュー上の区切りセパレータ表示指定
キーボードショートカットの指定
Scriptをメニューに出さない(非表示設定)

・CotEditorのAppleScript関連機能のバグ(v4.4.2)
・高度なサンプル集

AppleScriptで操作可能な範囲
最前面のウィンドウをフルスクリーン表示(1/2)
最前面のウィンドウをフルスクリーン表示(2/2)
選択範囲のテキストをhexdump(1/2)
選択範囲のテキストをhexdump(2/2)
選択範囲のカンマ区切りテキストをNumbersへ(1/2)
選択範囲のカンマ区切りテキストをNumbersへ(2/2)
選択範囲のテキストの文字比率グラフを表示(1/8)
選択範囲のテキストの使用文字比率のグラフ表示(2/8)
選択範囲のテキストの使用文字比率のグラフ表示(3/8)
選択範囲のテキストの使用文字比率のグラフ表示(4/8)
選択範囲のテキストの使用文字比率のグラフ表示(5/8)
選択範囲のテキストの使用文字比率のグラフ表示(6/8)
選択範囲のテキストの使用文字比率のグラフ表示(7/8)
選択範囲のテキストの使用文字比率のグラフ表示(8/8)

・便利な他のプログラムや周辺機器

さまざまなAppleScript呼び出しプログラムから操作①(1/2)
さまざまなAppleScript呼び出しプログラムから操作①(2/2)
さまざまなAppleScript呼び出しプログラムから操作②
さまざまなAppleScript呼び出しプログラムから操作③
さまざまなAppleScript呼び出しプログラムから操作④

■資料集

・CotEditorのAppleScript用語辞書解説
・CotEditorのAppleScript用語の変遷
・CotEditor&AppleScript Q&A
・AppleScript mini Reference
・macOS搭載 AppleScript関連ドキュメント
・AppleScript関連の情報源
・macOSバージョンとAppleScriptの動向
・AppleScript予約語一覧
・サードパーティ製FrameworkやAppleScript Librariesを呼ぶ
・エラーコード表

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

クリップボードに入った書式つきテキストをプレーン化する「PlainerText」

Posted on 12月 10, 2022 by Takaaki Naganoya

macOS 11以降用の常駐ツール、クリップボードに入った書式つきテキストをプレーンテキスト化する「PlainerText」を開発、販売を開始しました(macOS 11以降)。

起動すると常駐し、メニューバー右側のステータスバー・エリアに「P」の絵文字を表示します。クリップボードを0.5秒ごとに監視し、スタイル付きテキストが入っていた(スタイル付きテキストをコピーした)場合にはプレーンテキストに変換して、beep音を鳴らします。

–> Play Demo1 Movie

–> Play Demo2 Movie

–> Download Trial Version (Work for 10 minutes)

PlainerTextはBOOTHで500円でダウンロード販売しています。

また、動作内容がわからないと安心できないという人向けに、ソースコードおよび詳細なソースコード解説書を別途販売中です。

Posted in news PRODUCTS | Tagged 11.0savvy 12.0savvy 13.0savvy | Leave a comment

macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに

Posted on 12月 10, 2022 by Takaaki Naganoya

macOS 13のリリース版でスクリプトエディタを使うと、新規書類を作成しても「保存できない」とか、作成した書類を破棄できないとか、そもそもAppletとしてエクスポートする際にCode Signを指定するとハングアップするとかいう、macOS 13β版でも発生していなかった不具合のオンパレード。

もはや「この状態で何をバグレポートしろと?」「絶対に、リリース前にチェックとか一切してないだろ」という仕上がりに、開いた口がふさがりませんでした。

macOS 13.1の正式アップデートがリリースされ、これらの挙動は解消されたように見えます。見えるのですが、macOS 12でさんざんやらかしまくったように、β版で同じようなバグをノーチェックで出してくるので、油断ができないというべきなのか、信じた奴がバカなのかという状況。

とはいえ、β版でやらかしたトンでもないバグをApple側が認識していないこともままあるので、Appleの魔の手から環境を守るためにはβ版を試さないといけないんでしょう。Appleは、OSを開発しているんでしょうか? それとも、全世界に嫌がらせをしているんでしょうか?

Posted in Bug news | Tagged 13.0savvy | Leave a comment

macOS 13でNSNotFoundバグふたたび

Posted on 12月 1, 2022 by Takaaki Naganoya

また、Appleがやらかしてくれたようです。あの会社はNSNotFoundの定義値を何回間違えたら気が済むんでしょうか。これで通算4回目ぐらいです。macOS 10.12で発生し10.13.1で修正された定義値のミスをまたやったわけで、失敗がまったく生かされていない。大したものです。

今回のバグは、文字列の検索処理を行っているときに発見しました。指定文字列から対象文字列の登場位置と長さをリストで返す処理を行っていたところ、NSRangeからlocationを取得したときに、これ以上見つからない場所まで来たときにNSNotFoundを返すことを期待されるわけですが、そこに前回(macOS 10.12…10.13)と同様のおかしな値を返してきました。

この(↓)AppleScriptをmacOS 13上で実行すると、エラーになります。

追記:macOS 13.1でもエラーになります。

AppleScript名:テキストのキーワード検索(結果をNSRangeのlistで返す).scptd
— Created 2017-08-09 by Takaaki Naganoya
— 2017 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"
–http://piyocast.com/as/archives/4771

property NSString : a reference to current application’s NSString
property NSMutableArray : a reference to current application’s NSMutableArray
property NSLiteralSearch : a reference to current application’s NSLiteralSearch

set aStr to "ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
"

set aRes to searchWordRanges(aStr, "ATGC") of me as list
–>  {​​​​​{​​​​​​​location:0, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:10, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:20, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:30, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:40, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:50, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:60, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:70, ​​​​​​​length:4​​​​​}​​​}

on searchWordRanges(aTargText as string, aSearchStr as string)
  set aStr to NSString’s stringWithString:aTargText
  
set bStr to NSString’s stringWithString:aSearchStr
  
  
set hitArray to NSMutableArray’s alloc()’s init()
  
set cNum to (aStr’s |length|()) as integer
  
  
set aRange to current application’s NSMakeRange(0, cNum)
  
  
repeat
    set detectedRange to aStr’s rangeOfString:bStr options:(NSLiteralSearch) range:aRange
    
set aLoc to detectedRange’s location
    
log aLoc
    
if (detectedRange’s location) is equal to (current application’s NSNotFound) then exit repeat
    
    
hitArray’s addObject:detectedRange
    
    
set aNum to (detectedRange’s location) as number
    
set bNum to (detectedRange’s |length|) as number
    
    
set aRange to current application’s NSMakeRange(aNum + bNum, cNum – (aNum + bNum))
  end repeat
  
  
return hitArray
end searchWordRanges

★Click Here to Open This Script 

症状も前回とまったく同じなので、対処も前回と同じです。Appleは定期的にNSNotFoundの定義値を間違えるトンでもない会社なので(計測された事実)、NSNotFoundまわりはAppleがバグをやらかすことを前提に書いておくべきなんでしょう。

AppleScript名:テキストのキーワード検索(結果をNSRangeのlistで返す)v2.scptd
— Created 2017-08-09 by Takaaki Naganoya
— Modified 2022-12-01 by Takaaki Naganoya
— 2022 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

property NSString : a reference to current application’s NSString
property NSMutableArray : a reference to current application’s NSMutableArray
property NSLiteralSearch : a reference to current application’s NSLiteralSearch

set aStr to "ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
"

set aRes to searchWordRanges(aStr, "ATGC") of me as list
–>  {​​​​​{​​​​​​​location:0, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:10, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:20, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:30, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:40, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:50, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:60, ​​​​​​​length:4​​​​​}, ​​​​​{​​​​​​​location:70, ​​​​​​​length:4​​​​​}​​​}
–> {{location:0, |length|:4}, {location:10, |length|:4}, {location:20, |length|:4}, {location:30, |length|:4}, {location:40, |length|:4}, {location:50, |length|:4}, {location:60, |length|:4}, {location:70, |length|:4}}

on searchWordRanges(aTargText as string, aSearchStr as string)
  set aStr to NSString’s stringWithString:aTargText
  
set bStr to NSString’s stringWithString:aSearchStr
  
  
set hitArray to NSMutableArray’s alloc()’s init()
  
set cNum to (aStr’s |length|()) as integer
  
  
set aRange to current application’s NSMakeRange(0, cNum)
  
  
repeat
    set detectedRange to aStr’s rangeOfString:bStr options:(NSLiteralSearch) range:aRange
    
set aLoc to detectedRange’s location
    
    
–macOS 13でAppleが新たに作ったバグを回避
    
if (aLoc > 9.999999999E+9) or (aLoc = current application’s NSNotFound) then exit repeat
    
    
hitArray’s addObject:detectedRange
    
    
set aNum to (detectedRange’s location) as number
    
set bNum to (detectedRange’s |length|) as number
    
    
set aRange to current application’s NSMakeRange(aNum + bNum, cNum – (aNum + bNum))
  end repeat
  
  
return hitArray
end searchWordRanges

★Click Here to Open This Script 

Appleと協議した結果、そこは仕様として認識していないという話で、とくに仕様を変えていないという話で平行線をたどってしまいました。

結局、書き方を少々変えることで問題そのものを「なかったこと」にする方向で決着。納得はできませんが、macOS 10.11とか10.12の時代に書いたScriptでもあり、その実行環境は手元に残っていません(macOS 10.13は何台か存在しています。macOS 11のASのCocoa呼び出しバグの検証時に活躍)。

AppleScript名:テキストのキーワード検索(結果をNSRangeのlistで返す)v3.scptd
— Created 2017-08-09 by Takaaki Naganoya
— Modified 2022-08-29 by Takaaki Naganoya
— 2023 Piyomaru Software
use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

property NSString : a reference to current application’s NSString
property NSLiteralSearch : a reference to current application’s NSLiteralSearch
property NSMutableArray : a reference to current application’s NSMutableArray

set aStr to "ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
ATGC ACGT ATGC AGTC
"

set aRes to searchWordRanges(aStr, "ATGC") of me as list
–> {{location:0, |length|:4}, {location:10, |length|:4}, {location:20, |length|:4}, {location:30, |length|:4}, {location:40, |length|:4}, {location:50, |length|:4}, {location:60, |length|:4}, {location:70, |length|:4}}

on searchWordRanges(aTargText as string, aSearchStr as string)
  set aStr to NSString’s stringWithString:aTargText
  
set bStr to NSString’s stringWithString:aSearchStr
  
  
set hitArray to NSMutableArray’s alloc()’s init()
  
set cNum to (aStr’s |length|()) as integer
  
  
set aRange to current application’s NSMakeRange(0, cNum)
  
  
repeat
    set detectedRange to aStr’s rangeOfString:bStr options:(NSLiteralSearch) range:aRange
    
set aLen to (detectedRange’s |length|) as number
    
    
if aLen = 0 then exit repeat
    
    
hitArray’s addObject:detectedRange
    
    
set aNum to (detectedRange’s location) as number
    
set bNum to (detectedRange’s |length|) as number
    
    
set aRange to current application’s NSMakeRange(aNum + bNum, cNum – (aNum + bNum))
  end repeat
  
  
return hitArray
end searchWordRanges

★Click Here to Open This Script 

Posted in Bug list Text | Tagged 13.0savvy NSLiteralSearch NSMakeRange NSMutableArray NSNotFound NSRange NSString | Leave a comment

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

Google Search

Popular posts

  • macOS 13, Ventura(継続更新)
  • アラートダイアログ上にWebViewで3Dコンテンツを表示(WebGL+three.js)v3
  • UI Browserがgithub上でソース公開され、オープンソースに
  • macOS 13 TTS Voice環境に変更
  • Xcode 14.2でAppleScript App Templateを復活させる
  • 2022年に書いた価値あるAppleScript
  • ChatGPTで文章のベクトル化(Embedding)
  • 新発売:AppleScriptからSiriを呼び出そう!
  • iWork 12.2がリリースされた
  • 従来と異なるmacOS 13の性格?
  • 新発売:CotEditor Scripting Book with AppleScript
  • macOS 13対応アップデート:AppleScript実践的テクニック集(1)GUI Scripting
  • AS関連データの取り扱いを容易にする(はずの)privateDataTypeLib
  • macOS 13でNSNotFoundバグふたたび
  • macOS 12.5.1、11.6.8でFinderのselectionでスクリーンショット画像をopenできない問題
  • ChatGPTでchatに対する応答文を取得
  • 新発売:iWork Scripting Book with AppleScript
  • Finderの隠し命令openVirtualLocationが発見される
  • macOS 13.1アップデートでスクリプトエディタの挙動がようやくまともに
  • あのコン過去ログビューワー(暫定版)

Tags

10.11savvy (1101) 10.12savvy (1242) 10.13savvy (1390) 10.14savvy (586) 10.15savvy (434) 11.0savvy (277) 12.0savvy (185) 13.0savvy (55) CotEditor (60) Finder (47) iTunes (19) Keynote (98) NSAlert (60) NSArray (51) NSBezierPath (18) NSBitmapImageRep (20) NSBundle (20) NSButton (34) NSColor (51) NSDictionary (27) NSFileManager (23) NSFont (18) NSImage (41) NSJSONSerialization (21) NSMutableArray (62) NSMutableDictionary (21) NSPredicate (36) NSRunningApplication (56) NSScreen (30) NSScrollView (22) NSString (117) NSURL (97) NSURLRequest (23) NSUTF8StringEncoding (30) NSView (33) NSWorkspace (20) Numbers (56) Pages (37) Safari (41) Script Editor (20) WKUserContentController (21) WKUserScript (20) WKUserScriptInjectionTimeAtDocumentEnd (18) WKWebView (23) WKWebViewConfiguration (22)

カテゴリー

  • 2D Bin Packing
  • 3D
  • AirDrop
  • AirPlay
  • Animation
  • AppleScript Application on Xcode
  • beta
  • Bluetooth
  • Books
  • boolean
  • bounds
  • Bug
  • Calendar
  • call by reference
  • Clipboard
  • Code Sign
  • Color
  • Custom Class
  • dialog
  • drive
  • 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
  • Machine Learning
  • Map
  • Markdown
  • Menu
  • Metadata
  • MIDI
  • MIME
  • Natural Language Processing
  • Network
  • news
  • Noification
  • Notarization
  • Number
  • Object control
  • OCR
  • OSA
  • PDF
  • Peripheral
  • 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
  • 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)
  • 未分類

アーカイブ

  • 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