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

月: 2023年1月

Keynoteの表の選択中のセルのデータをDeepLで翻訳して書き戻す

Posted on 1月 31 by Takaaki Naganoya

Keynoteの最前面の書類中の、現在表示中のスライドの表の選択中のセル中のテキストを取得してDeepLのREST APIを呼び出して指定言語に翻訳し、表のセルに翻訳後のテキストを書き戻すAppleScriptです。

DeepLのREST API呼び出しのためには、DeepL SE社のWebサイトで「DeepL API Free」(無料コース)か「DeepL API Pro」プランにサインアップして、API Keyを取得して、プログラムリスト中に記入したうえで実行してください。


▲実行前。Keynote書類上の表の翻訳対象のセルを選択して実行


▲実行後。Keynote書類上の表の翻訳対象のセルをに翻訳後の内容をストア

実際に使ってみると、けっこう翻訳に時間がかかるのと、一度翻訳した同じフレーズを再度翻訳させるのはコストがかかるため、ローカルに「翻訳キャッシュ」を作って、翻訳ずみの内容を再翻訳しないように工夫する必要がありそうです。

AppleScript名:Keynoteの表の選択中のセルのデータをDeepLで翻訳して書き戻す.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2023/01/30
—
–  Copyright © 2023 Piyomaru Software, All Rights Reserved
—

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

property NSString : a reference to current application’s NSString
property NSCountedSet : a reference to current application’s NSCountedSet
property NSJSONSerialization : a reference to current application’s NSJSONSerialization
property NSUTF8StringEncoding : a reference to current application’s NSUTF8StringEncoding

set myAPIKey to "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"
set myTargLang to "EN" –翻訳ターゲット言語

set aTableDat to returnSelectedTableCellDataOnCurrentSlide() of me
–> {"プロパティ項目", "データ型", "読み/書き", "内容(サンプル)", "説明"}

set nList to {}
repeat with i in aTableDat
  set j to contents of i
  
set tRes to translateWithDeepL(j, myAPIKey, myTargLang) of me
  
set the end of nList to tRes
end repeat

–表に翻訳した内容を書き戻す
storeSelectedTableCellDataOnCurrentSlide(nList) of me

on storeSelectedTableCellDataOnCurrentSlide(sList)
  tell application "Keynote"
    tell front document
      tell current slide
        try
          set theTable to first table whose class of selection range is range
        on error
          return false –何も選択されてなかった場合
        end try
        
        
tell theTable
          set cList to every cell of selection range
          
if (length of cList) is not equal to (length of sList) then error
          
          
set aCount to 1
          
repeat with i in cList
            set j to contents of i
            
tell j
              set value of it to (contents of item aCount of sList)
            end tell
            
set aCount to aCount + 1
          end repeat
        end tell
      end tell
    end tell
  end tell
end storeSelectedTableCellDataOnCurrentSlide

on returnSelectedTableCellDataOnCurrentSlide()
  tell application "Keynote"
    tell front document
      tell current slide
        try
          set theTable to first table whose class of selection range is range
        on error
          return false –何も選択されてなかった場合
        end try
        
        
tell theTable
          set vList to value of every cell of selection range
          
set cCount to count of column of selection range
          
set rCount to count of row of selection range
          
          
–複数行選択されていた場合にはエラーを返すなどの処理の布石
          
return vList
        end tell
      end tell
    end tell
  end tell
end returnSelectedTableCellDataOnCurrentSlide

–DeepLのAPIを呼び出して翻訳する
on translateWithDeepL(myText, myAPIKey, myTargLang)
  set sText to "curl -X POST ’https://api-free.deepl.com/v2/translate’ -H ’Authorization: DeepL-Auth-Key " & myAPIKey & "’ -d ’text=" & myText & "’ -d ’target_lang=" & myTargLang & "’"
  
try
    set sRes to do shell script sText
  on error
    error
  end try
  
  
set jsonString to NSString’s stringWithString:sRes
  
set jsonData to jsonString’s dataUsingEncoding:(NSUTF8StringEncoding)
  
set aJsonDict to NSJSONSerialization’s JSONObjectWithData:jsonData options:0 |error|:(missing value)
  
  
set tRes to aJsonDict’s valueForKeyPath:"translations.text"
  
if tRes = missing value then
    set erMes to (aJsonDict’s valueForKey:"message") as string
    
error erMes
  else
    return contents of first item of (tRes as list)
  end if
end translateWithDeepL

★Click Here to Open This Script 

Posted in REST API shell script Text | Tagged 12.0savvy 13.0savvy | Leave a comment

新発売:ポケコンサークル「LL」会誌Vol.19復刻版

Posted on 1月 30 by Takaaki Naganoya

1987年に結成し、1994年まで会誌を発行し続けていたポケットコンピュータのユーザーズサークル「LL」の会報Vol.19の復刻・電子書籍版を刊行しました。

→ 販売ページ

Piyomaru Softwareによる電子書籍の71冊目です。例によって制作過程では大量のAppleScriptが使用されていますが、AppleScriptに関する本ではありません。

1987年に結成された、ポケコンサークル「LL」の会誌最終号(Vol.19)の復刻版です(当時のLL会員の方には無償配布)。1994年に発行された会誌Vol.19のバックアップCD-Rデータから再作成して蘇った電子書籍版。PDF 282ページ。

目次

■巻頭カラーグラビアページ

・欧州の森に謎のPC-1560を見た!
・幸福の青いPC-1500″D”
・月々240円で昔の彼女に会える
・SC61860をサポートするクロスアセンブラ
・2022年に新発売のMEPに驚愕!
・これがCE-140Fエミュレータだ!
・PC-1600用 大容量RAMモジュール
・露国在住のHWRなあんちくしょう
・多機種対応/合体式Bluetoothモジュール
・CE-126Pエミュレータで感熱紙不要の印刷を
・鉄人・堀川浩司氏のイベント参加魂!
・独仏のWebサイトは一味も二味も違う!
・東京都青梅市に古パソコン動態保存の「夢の図書館」
・ポケコン用のLCDをオリジナルで作成・販売
・ポケコン用周辺機器の製造・販売を行う高松製作所
・ポケコンなどの3Dモデルをフリー公開
・日本国内外のパソコンメーカー栄枯盛衰

まえがき

ポケコンを当時何に使っていたの?~当時のポケコンユーザーの活動内容を振り返る

会誌作成テクノロジーの進歩~LL会誌を作る道具がどのように進化していったか

できるかな? Vol.2 ポケコン用PC-9801マウスインタフェース「鼠小僧キューハチ」完成!

CE-140F徹底解析

X680x0によるポケコンのクロス開発 

酸化ナトリウムくらぶ Vol.16  Pocket Movie Project第2回 「コントロール・コード」

常駐型 多重再生PCM&サウンドドライバーSound TSR 16K

CHENGER mkII For PC-1600K, PC-1605K, PC-1600

常駐型割り込みハードコピープログラムFor PC-1600K, PC-1605K, PC-1600 Post It! ver1.2

白黒二値画面情報圧縮用副プログラム集 LIPS For PC-1600K, PC-1605K, PC-1600

 

割り込みリアルタイムクロック For PC-1600K, PC-1605K, PC-1600

 

カルチャーショック野球拳 For PC-1600K, PC-1605K

でぃじたる和時計 For PC-1600K, PC-1605K

■エッセイ

■ふりーとーく

■かつて運営していたパソコン通信ホスト「LLine」をふりかえる

■The LL Times

■TV LL

■編集後記2023

Posted in Books news | Leave a comment

16進数の計算

Posted on 1月 25 by Takaaki Naganoya

ちょっとした16進数の計算を行いたいときに、AppleScriptのネイティブ機能にはそういうのはないので、別のものが持っている機能を利用することになります。

いろいろCocoa系の機能も探してみたものの、結局「shellのbcコマンドが手っ取り早くていいよね!」ということに。

ポケコンサークルの会誌のダンプリストをもとに、入力用のBASICのリストを自動作成するとき、アドレスを変更しなくては入力できないことが判明。このさい、アドレス計算を行うのに16進数の加算が必要でした。そのために作ってみたものです。

AppleScript名:16進数の計算.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2023/01/25
—
–  Copyright © 2023 Piyomaru Software, All Rights Reserved
—

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

set a to "8030"
set b to "6000"
set h1 to hexStrAdd(a, b) of me
–> "E030"

set h3 to hexStrSub(a, b) of me
–> "2030"

on hexStrAdd(aStr as string, bStr as string)
  set sStr to "echo \"ibase=10; obase=10; " & aStr & "+" & bStr & "\" | bc"
  
set aRes to do shell script sStr
  
return aRes as string
end hexStrAdd

on hexStrSub(aStr as string, bStr as string)
  set sStr to "echo \"ibase=10; obase=10; " & aStr & "-" & bStr & "\" | bc"
  
set aRes to do shell script sStr
  
return aRes as string
end hexStrSub

★Click Here to Open This Script 

Posted in Hex Number | Tagged 13.0savvy | Leave a comment

SHARP MZ MML再生_アルハンブラ_mono

Posted on 1月 11 by Takaaki Naganoya

はるかかなた昔の、MZ-80Bが採用していた単音3オクターブの範囲の音楽再生を行うPLAY文、それに準拠したポケットコンピュータ用の音楽再生プログラムのデータ「アルハンブラの想い出」の再生を行うため「だけ」に、そのMML再生プログラムをAppleScriptで作ってみたものです(2時間ぐらいだったか)。

音階再生用に、オープンソースの「MPSoundEngine」フレームワークをUniversal Binaryでビルドし直して、これを用いて音階データと音の長さのデータのテーブルを作って再生しています。

–> Download mpSoundKit_univ.framework(To ~/Library/Frameworks)

オリジナルのMZにしてもポケットコンピュータのMML再生プログラムにしても、単音しか出ない仕様ですが、このデータの原作者が楽譜を細切れにしてアルペジオ奏法で演奏させているかのような効果を生み出しています。これは、当時も腰を抜かしましたが、普通こんなものはやらない狂気の産物、人類レベルの遺産といえます。

→ 本AppleScriptの再生ムービー

MPSoundEngineをフレームワーク化したものを呼び出しているため、実行にはScript Debuggerが必要です。macOS 11よりも古い環境では以前に掲載したFramework(Intelバイナリのみ)がそのまま利用できるはずです。

まだ、いまひとつ休符(R)の処理などがうまく行っていないようで、この曲以外のデータを再生させると、首をひねってしまう演奏をしてしまうものの、それはオリジナルのデータの出来がよくなかったのか、あるいはこのプログラムの再現度が高くないためかは不明です。

AppleScript名:SHARP MZ MML再生_アルハンブラ_mono.scptd
—
–  Created by: Takaaki Naganoya
–  Created on: 2022/12/22
—
–  Copyright © 2022 Piyomaru Software, All Rights Reserved
—
use AppleScript version "2.4" — Yosemite (10.10) or later
use framework "Foundation"
use framework "mpSoundKit" –https://github.com/matthiasplappert/MPSoundEngine
use scripting additions

script spd
  property musStr : ""
  
property musList : {}
  
property mmlList : {}
end script

set octL to {"-C", "-#C", "-D", "-#D", "-E", "-F", "-#F", "-G", "-#G", "-A", "-#A", "-B", "C", "#C", "D", "#D", "E", "F", "#F", "G", "#G", "A", "#A", "B", "+C", "+#C", "+D", "+#D", "+E", "+F", "+#F", "+G", "+#G", "+A", "+#A", "+B"}

set lenL to {130.81, 138.59, 146.83, 155.56, 164.81, 174.61, 185.0, 196.0, 207.65, 220.0, 233.08, 246.94, 261.63, 277.18, 293.66, 311.13, 329.63, 349.23, 369.99, 392.0, 415.3, 440.0, 466.16, 493.88, 523.25, 554.37, 587.33, 622.25, 659.25, 698.46, 739.99, 783.99, 830.61, 880.0, 932.33, 987.77}

set noteList to {"9", "8", "7", "6", "5", "4", "3", "2", "1", "0"}
set noteTime to {4, 3, 2, 1.5, 1, 0.75, 0.5, 0.375, 0.25, 0.125}

set aDict to current application’s NSMutableDictionary’s dictionaryWithObjects:(lenL) forKeys:(octL)
set bDict to current application’s NSMutableDictionary’s dictionaryWithObjects:(noteTime) forKeys:(noteList)

set (musStr of spd) to "-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+C+C+CE+C+C+CA0+C+C+CE+C+C+CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+D0+F+F+FG+F+F+FC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+F+F+FG+F+F+FC0+E+E+EG+E+E+E+C0+E+E+EG+E+E+E+D0+F+F+FG+F+F+FC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+GC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G-F0+C+C+CC+C+C+CA0+C+C+CC+C+C+CG0+B+B+BC+B+B+B-F0+A+A+AC+A+A+A+F0+A+A+AC+A+A+A-D0+B+B+BF+B+B+B-E0+A+A+AB+A+A+A+E0+#G+#G+#GB0+#G+#G+#G+E0+#G+#G+#GB0+#G+#G+#G-E0+#G+#G+#G+D0+#G+#G+#G+E0+#G+#G+#G+D0+#G+#G+#G+E0+#G+#G+#G+D0+#G+#G+#G-A0+#A+#A+#A+#C0+#A+#A+#A+E0+#A+#A+#A+#C0+#A+#A+#A+E0+A+A+A+#C0+A+A+A#C0+G+G+GA+G+G+G+E0+G+G+GA+G+G+G+F0+A+A+AA+A+A+AD0+G+G+G+E+G+G+G+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+F+F+FA+F+F+F+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+E+E+EA+E+E+E+B0+E+E+EA+E+E+E+B0+D+D+DA+D+D+D-F0+C+C+C#D+C+C+CA0+C+C+C#D+C+C+CA0+D+D+DD+D+D+D-E0+C+C+CE+C+C+C#G0BBBEBBB#G0BBBEBBB-E0BBBEBBB#G0BBBEBBB#G0BBBEBBB-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+C+C+CE+C+C+CA0+C+C+CE+C+C+CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+D0+F+F+FG+F+F+FC0+G+G+GG+G+GE0+G+G+GG+G+G+G+E0+F+F+FG+F+F+FC0+E+E+EG+E+E+E+C0+E+E+EG+E+E+E+D0+F+F+FG+F+F+FC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+GC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G-F0+C+C+CC+C+C+CA0+C+C+CC+C+C+CG0+B+B+BC+B+B+B-F0+A+A+AC+A+A+A+F0+A+A+AC+A+A+A-D0+B+B+BF+B+B+B-E0+A+A+AB+A+A+A+E0+#G+#G+#GB0+#G+#G+#G+E0+#G+#G+#GB0+#G+#G+#G-E0+#G+#G+#GD0+#G+#G+#G+E0+#G+#G+#G+D0+#G+#G+#G+E0+#G+#G+#GD0+#G+#G+#G-A0+#A+#A+#A+#C0+#A+#A+#A+E0+#A+#A+#A+#C0+#A+#A+#A+E0+A+A+A+#C+A+A+A#C0+G+G+GA+G+G+G+E0+G+G+GA+G+G+G+F0+A+A+AA+A+A+AD0+G+G+G+E+G+G+G+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+F+F+FA+F+F+F+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+E+E+EA+E+E+E+B0+E+E+EA+E+E+E+B0+D+D+DA+D+D+D-F0+C+C+C#D+C+C+CA0+C+C+C#D+C+C+CA0+D+D+DD+D+D+D-E0+C+C+CE+C+C+C#G0BBBEBBB#G0BBBEBBB-E0BBBEBBB#G0BBBEBBB#G0BBBEBBB-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#CE0+#C+#C+#CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F-A0+D+D+DD+D+D+DB0+D+D+DD+D+D+DD0+#F+#F+#F#F0+#F+#F+#F-A0+#F+#F+#F-D0+#F+#F+#G+#F+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-#F0+A+A+A#F+A+A+AA0+A+A+A+#C+A+A+AA0+A+A+A#F+A+A+A#G0+#G+#G+#G#G0+#G+#G+#G#B0+#G+#G+#G#D0+#G+#G+#G#B0+#D+#D+#D#G0+#D+#D+#D#C0+#F+#F+#F#G0+#F+#F+#F+#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E#C0+E+E+E#G0+E+E+E+#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E-B0+D+D+DF+D+D+DF0+D+D+DD+D+D+DE0+D+D+DF+D+D+D-E0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#C-E0BBBDBBB-A0BBBEBBBE0AAAEAAA#F0AAAGAAA-A0AAAEAAA#C0AAAEBBBA0+#C+#C+#CB0+D+D+D-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#CE0+#C+#C+#CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F-A0+D+D+DD+D+D+DB0+D+D+DD+D+D+DD0+#F+#F+#F#F0+#F+#F+#F-A0+#F+#F+#F-D0+#F+#F+#F+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-#F0+A+A+A#F+A+A+AA0+A+A+A+#C+A+A+AA0+A+A+A#F+A+A+A#G0+#G+#G+#G#G0+#G+#G+#G#B0+#G+#G+#G#D0+#G+#G+#G#B0+#D+#D+#D#G0+#D+#D+#D#C0+#F+#F+#F#G0+#F+#F+#F+#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E-B0+D+D+DF+D+D+DF0+D+D+DD+D+D+DE0+D+D+DF+D+D+D-E0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#C-E0BBBDBBB-A0AAAEAAAE0AAAEBBBA0+C+C+CB+D+D+D-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+C+C+CE+C+C+CA0+C+C+CE+C+C+CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+C0+E+E+EE+E+E+E+D0+F+F+FG+F+F+FC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+F+F+FG+F+F+FC0+E+E+EG+E+E+E+C0+E+E+EG+E+E+ED0+F+F+FG+F+F+FC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+GC0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G+E0+G+G+GG+G+G+G-F0+C+C+CC+C+C+CA0+C+C+CC+C+C+CG0+B+B+BC+B+B+B-F0+A+A+AC+A+A+A+F0+A+A+AC+A+A+A-D0+B+B+BF+B+B+B-E0+A+A+AB+A+A+A+E0+#G+#G+#GB0+#G+#G+#G+E0+#G+#G+#GB0+#G+#G+#G-E0+#G+#G+#GD0+#G+#G+#G+E0+#G+#G+#G+D0+#G+#G+#G+E0+#G+#G+#G+D0+#G+#G+#G-A0+#A+#A+#A+#C0+#A+#A+#A+E0+#A+#A+#A+#C0+#A+#A+#A+E0+A+A+A+#C+A+A+A#C0+G+G+GA+G+G+G+E0+G+G+GA+G+G+G+F0+A+A+AA+A+A+AD0+G+G+G+E+G+G+G+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+F+F+FA+F+F+F+D0+F+F+FA+F+F+F+D0+F+F+FA+F+F+FD0+E+E+EA+E+E+E+B0+E+E+EA+E+E+E+B0+D+D+DA+D+D+D-F0+C+C+C#D+C+C+CA0+C+C+C#D+C+C+CA0+D+D+DD+D+D+D-E0+C+C+CE+C+C+C#G0BBBEBBB#G0BBBEBBB-E0BBBEBBB#G0BBBEBBB#G0BBBEBBB-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#CE0+#C+#C+#CB0+D+D+DE+D+D+D-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F+D0+#F+#F+#F#F0+#F+#F+#F-A0+D+D+DD+D+D+DB0+D+D+DD+D+D+DD0+#F+#F+#F#F0+#F+#F+#F-A0+#F+#F+#F-D0+#F+#F+#F+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-#F0+A+A+A#F+A+A+AA0+A+A+A+#C+A+A+AA0+A+A+A#F+A+A+A#G0+#G+#G+#G#G0+#G+#G+#G#B0+#G+#G+#G#D0+#G+#G+#G#B0+#D+#D+#D#G0+#D+#D+#D#C0+#F+#F+#F#G0+#F+#F+#F+#C0+E+E+E#G0+E+E+E+#C0+E+E+E#G0+E+E+E#C0+E+E+E#G0+E+E+E+#C0+E+E+E#G+E+E+E+#C0+E+E+E#G+E+E+E-B0+D+D+DF+D+D+DF0+D+D+DD+D+D+DE0+D+D+DF+D+D+D-E0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#CE0+#C+#C+#C-E0BBBDBBB-A0BBBEBBBE0AAAEAAA#F0AAAGAAA-A0AAAEAAAE0AAAEAAAE0AAAEAAA-A0AAAFAAAF0AAAFAAAF0AAAFAAA-A0BBBFBBBA0+C+C+CF+C+C+CA0+D+D+DF+D+D+D-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-E0+E+E+E#G+E+E+E#G0+E+E+E#G+E+E+E#G0+E+E+E#G+E+E+E-E0+D+D+D#F+D+D+DE0+C+C+CE+C+C+C-E0BBBDBBB-A0AAAEAAAE0AAA#EAAAF0AAA#EAAA-A0AAAEAAAE0AAAEAAAE0AAAEAAA-A0AAAFAAAF0AAAFAAAF0AAAFAAA-A0BBBFBBBA0+C+C+CF+C+C+CA0+B+B+BF+B+B+B-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-A0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E+#C0+E+E+EE+E+E+E-E0+#G+#G+#GE0+#G+#G+#G+E0+#G+#G+#GE0+#G+#G+#G+E0+#G+#G+#GE0+#G+#G+#G-E0+#F+#F+#FE0+#F+#F+#F+#C0+E+E+EE+E+E+EB0+D+D+DE+D+D+D-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#CE0+#C+#C+#C#F0+#C+#C+#CA0+#C+#C+#C-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#C-E0+#C+#C+#C-#B0+#C+#C+#C#C0+#C+#C+#C-A0+#C+#C+#CE0+#C+#C+#CA0+#C+#C+#C-E0+#C+#C+#C-#B0+#C+#C+#C#C0+#C+#C+#C-A3EA+#C+E+A+E8A7R7"

set baseTime to 0.25
set (musList of spd) to characters of (musStr of spd)
set octV to 0 –Ave Octave

set defaultNote to {octave:0, noteStr:missing value, sharpF:missing value, flatF:missing value, noteLength:missing value}
copy defaultNote to curNote

set prevNoteLength to -1
set (mmlList of spd) to {}

repeat with i in (musList of spd)
  set j to contents of i
  
  
considering case
    if j = "-" then
      if noteStr of curNote is not equal to missing value then
        set the end of (mmlList of spd) to curNote
        
set prevNoteLength to noteLength of curNote
        
        
copy defaultNote to curNote
        
set (noteLength of curNote) to prevNoteLength
        
set octave of curNote to -1
      else
        set octave of curNote to -1
      end if
      
    else if j = "+" then
      if noteStr of curNote is not equal to missing value then
        set the end of (mmlList of spd) to curNote
        
set prevNoteLength to noteLength of curNote
        
        
copy defaultNote to curNote
        
set (noteLength of curNote) to prevNoteLength
        
set octave of curNote to 1
      else
        set octave of curNote to 1
      end if
      
      
(*
    else if j = "b" then –Flat
      if noteStr of curNote is not equal to missing value then
        set the end of mmlList to curNote
        set prevNoteLength to noteLength of curNote
        
        copy defaultNote to curNote
        set (noteLength of curNote) to prevNoteLength
      else
        set flatF of curNote to true
      end if
      *)

    else if j = "#" then –Sharp
      if noteStr of curNote is not equal to missing value then
        set the end of (mmlList of spd) to curNote
        
set prevNoteLength to noteLength of curNote
        
        
copy defaultNote to curNote
        
set (noteLength of curNote) to prevNoteLength
      else
        set sharpF of curNote to true
      end if
      
    else if j is in {"C", "D", "E", "F", "G", "A", "B", "R"} then
      if noteStr of curNote is not equal to missing value then
        set the end of (mmlList of spd) to curNote
        
set prevNoteLength to noteLength of curNote
        
        
copy defaultNote to curNote
        
set (noteLength of curNote) to prevNoteLength
        
      end if
      
      
set (noteStr of curNote) to j
      
    else if j is in noteList then
      set noteLength of curNote to j
      
if noteStr of curNote is not equal to missing value then
        set the end of (mmlList of spd) to curNote
        
set prevNoteLength to noteLength of curNote
        
        
copy defaultNote to curNote
        
set (noteLength of curNote) to prevNoteLength
      else
        set the end of (mmlList of spd) to curNote
      end if
      
    end if
  end considering
  
end repeat

if noteStr of curNote is not equal to missing value then set the end of (mmlList of spd) to curNote –Append Last Item
–return mmlList

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

repeat with i in (mmlList of spd)
  set j to contents of i
  
  
set curOctave to octave of j
  
set curOctaveStr to encodeOctave(curOctave) of me
  
  
set sharpFlag to sharpF of j
  
set flatFlag to flatF of j
  
set sfStr to encodeSharpAndFlat(sharpFlag, flatFlag) of me
  
  
set noteLenStr to noteLength of j
  
set noteLenTime to (bDict’s valueForKey:noteLenStr) as real
  
  
set noteString to noteStr of j
  
if noteString = "R" then
    engine’s |stop|()
    (
current application’s NSThread’s sleepForTimeInterval:(((noteLenTime * baseTime)) as real))
    
–delay (noteLenTime * baseTime) / 2
    
engine’s start()
  else
    set noteKey to curOctaveStr & sfStr & noteString
    
try
      set noteFreq to (aDict’s valueForKey:noteKey) as real
    on error
      engine’s |stop|()
      
return
    end try
    
    (
engine’s channel’s setFrequency:noteFreq)
    
–(engine’s rightChannel()’s setFrequency:noteFreq)
    
    (
current application’s NSThread’s sleepForTimeInterval:(((noteLenTime * baseTime)) as real))
    
  end if
end repeat

engine’s |stop|()

on encodeSharpAndFlat(sharpF, flatF)
  if {sharpF, flatF} = {missing value, missing value} then return ""
  
if {sharpF, flatF} = {true, missing value} then return "#"
  
if {sharpF, flatF} = {missing value, true} then return "b"
  
if {sharpF, flatF} = {true, true} then error "Sharp and Flat in one note"
end encodeSharpAndFlat

on encodeOctave(curOctave)
  if curOctave = 0 then
    set curOctaveStr to ""
  else if curOctave = 1 then
    set curOctaveStr to "+"
  else if curOctave = -1 then
    set curOctaveStr to "-"
  end if
  
return curOctaveStr
end encodeOctave

★Click Here to Open This Script 

Posted in Sound | Leave a comment

HexDump to BASIC

Posted on 1月 9 by Takaaki Naganoya

これも同じく、8bitコンピュータ時代のクロスアセンブラが出力していたダンプリストを、BASICのPOKE文に展開して出力するという、20〜30年前の仕様のテキスト変換を行うために作ったものです。

CotEditorでオープン中のダンプリストのテキストの変換対象行を選択しておいた状態で実行すると、変換したリストを新規書類に出力します。

AppleScript名:HexDump to BASIC.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2023/01/09
—
–  Copyright © 2023 Piyomaru Software, All Rights Reserved
—

tell application "CotEditor"
  tell front document
    set aaSel to paragraphs of contents of selection
  end tell
end tell

set sNum to 100
set allText to ""
repeat with i in aaSel
  set tmpL to ""
  
  
set bList to words of i
  
set aStr to retOnLineBasicPoke(bList) of me
  
set allText to allText & ((sNum as string) & ": ") & aStr & return
  
set sNum to sNum + 1
end repeat

tell application "CotEditor"
  set newDoc to make new document
  
tell newDoc
    set contents of it to allText
  end tell
end tell

on retOnLineBasicPoke(aList)
  set addrStr to first item of aList
  
set aList to rest of aList
  
set aaList to items 1 thru 8 of aList
  
  
set aStr to "POKE #0, &" & addrStr & ", "
  
repeat with i in aaList
    set j to contents of i
    
set aStr to aStr & "&" & j & ", "
  end repeat
  
  
return text 1 thru -3 of aStr
end retOnLineBasicPoke

★Click Here to Open This Script 

Posted in Text | Tagged 13.0savvy CotEditor | Leave a comment

Intel Hexa to BASIC

Posted on 1月 9 by Takaaki Naganoya

これ、8bitコンピュータ時代のクロスアセンブラが出力していたIntel Hexaフォーマットのダンプリスト(EPROMライター向けの出力フォーマットらしい)を、BASICのPOKE文に展開して出力するという、20〜30年前の仕様のテキスト変換を行うために作ったものです。

CotEditorでオープン中のIntel Hexaのテキストの変換対象行を選択しておいた状態で実行すると、変換したリストを新規書類に出力します。

汎用性は一切ないのですが、実際にさまざまな本を作る際に、こうした「ちょっとしたツール」を作るのと作らないのとでは生産性が段違いです。

ただ、元データと最終成果物を示すと途中のロジックをプログラム側で考えて出力してくれるといいのに、とは思います。

AppleScript名:Intel Hexa to BASIC.scpt
—
–  Created by: Takaaki Naganoya
–  Created on: 2023/01/09
—
–  Copyright © 2023 Piyomaru Software, All Rights Reserved
—

use AppleScript version "2.4"
use scripting additions
use framework "Foundation"

tell application "CotEditor"
  tell front document
    set aaSel to paragraphs of contents of selection
  end tell
end tell

set sNum to 100
set allText to ""
repeat with i in aaSel
  set tmpL to ""
  
set j to contents of i
  
set {addrStr, hexList} to procOneLine(j) of me
  
set aStr to retOnLineBasicPoke(addrStr, hexList) of me
  
set allText to allText & ((sNum as string) & " ") & aStr & return
  
set sNum to sNum + 1
end repeat

tell application "CotEditor"
  set newDoc to make new document
  
tell newDoc
    set contents of it to allText
  end tell
end tell

on retOnLineBasicPoke(addrStr, aList)
  set aStr to "POKE #0, &" & addrStr & ", "
  
repeat with i in aList
    set j to contents of i
    
set aStr to aStr & "&" & j & ", "
  end repeat
  
  
return text 1 thru -3 of aStr
end retOnLineBasicPoke

on procOneLine(a)
  set fChar to first character of a
  
if fChar is not equal to ":" then error
  
  
set byteC to text 2 thru 3 of a
  
set byteNum to retIntFromHexString(byteC) of me
  
  
set addrStr to text 4 thru 7 of a
  
  
set hList to {}
  
repeat with i from 10 to (10 + (2 * (byteNum – 1))) by 2
    set tmpStr to text i thru (i + 1) of a
    
set the end of hList to tmpStr
  end repeat
  
return {addrStr, hList}
end procOneLine

on retIntFromHexString(aHex as string)
  set {aRes, hexRes} to (current application’s NSScanner’s scannerWithString:aHex)’s scanHexInt:(reference)
  
if aRes = false then
    return "" –エラーの場合
  else
    return hexRes
  end if
end retIntFromHexString

★Click Here to Open This Script 

Posted in Text | Tagged 13.0savvy CotEditor | Leave a comment

新発売:Mail.app Scripting Book with AppleScript

Posted on 1月 6 by Takaaki Naganoya

Piymaru Softwareによる電子書籍の70冊目は、AppleScript対応アプリケーション徹底解説シリーズの第6弾。

macOS上の主要アプリケーション、FileMaker Pro、ミュージック.app、Webブラウザ、iWork(Keynote、Pages、Numbers)、CotEditorときて、ご要望の多かった「メール」(Mail.app)についてのScripting本です。macOS 13.1+Mail.app v16対応。PDF 369ページ+サンプルScript Zipアーカイブで構成されています。

→ 販売ページ

本書は、Mail.appのAppleScriptによるScriptingについて基礎からハイ・テクニックまで、詳細にまとめた決定版です。

メールの詳細な情報取得や送信、ファイル添付送信、メールのスレッドをマインドマップ風に可視化して表示したり、REST API経由で高速メール配信サービスを用いた送信まで。幅広く実用的なメール関連のAppleScriptのノウハウをご紹介しています。

ずいぶん時間をかけて書いた本で、あとから企画が出た数冊の本が追い抜いていました。CotEditor本も、あとから企画したものの、あちらが先に完成しました。とにかくアプリケーションの規模が大きく、機能が多く、試しておくべき機能が多いので、とにかく時間がかかるんですね。実際、年末年始も書いていました。

以前から(2004年ぐらいから)受信メールのサブフォルダへの再仕分けScriptを運用しており、いまも利用していますが、これを添付しています。

また、選択したメールスレッドのマインドマップ形式の可視化Scriptも、別途アプリケーションをインストールしなくても利用できるものを添付しています。

SendGridのREST APIを呼び出して超高速にメール送信を行うScriptは、あんまり速いので腰が抜けるほどですが、これも一見の価値あるものでしょう。

Numbersの表に入れたデータをもとに、メールの文面にデータを差し込んで送信するScriptも添付しているので、年末年始のごあいさつなどに威力を発揮することでしょう。

■■目次

■初級

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

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

メール.appの情報を取得しよう
 メール.appの名前を取得
 メール.appのバージョンを取得
 メール.appのプロパティ項目と内容(1/2)
 メール.appのプロパティ項目と内容(2/2)

選択中のメールボックス、メールを取得
 selected mainboxes=選択中のメールボックス
 selected messages=選択中のメール
 selection=選択中のメッセージを取得
 メールボックスのプロパティ項目と内容

メール情報の取得
 メッセージ(メール)の内容を取得
 メッセージ(メール)のソースを取得
 メッセージ(メール)の各種情報を取得
 メッセージのプロパティ項目と内容
 メッセージのプロパティ項目と内容
 メッセージのプロパティ項目と内容

条件に合ったメールの抽出
 条件に合うメッセージを取得

メールアカウント情報
 メールアカウントは複数存在可能
 accountオブジェクトの詳細情報を取得
 アカウントのプロパティ項目と内容①
 アカウントのプロパティ項目と内容②

メールアドレスを取り出す
 文字列からメールアドレスと氏名を抽出
 選択中のメッセージからメールアドレスと氏名を抽出

シグネチャ(署名)
 設定>署名で「署名」を管理
 署名から情報を取得
 アプリケーションの選択中署名情報
 署名の属性値の書き換え(名称、本文)

スクリプトメニューからの操作
 スクリプトメニューからの操作①
 スクリプトメニューからの操作②
 スクリプトメニューからの操作③

プリントアウト
 メール.appから印刷出力(GUI側)
 AppleScriptによる印刷
 AppleScript(GUI Scripting)による印刷

■中級

アカウントを指定しての新着メール確認
 メールアカウント種類ごとのメール確認
 新着メール確認スケジュールの設定/停止

SMTPサーバー
 SMTPサーバー情報の取得
 指定アカウントのSMTPサーバー設定を切り替え
 SMTPサーバーのプロパティ項目と内容

新規メール作成
 メッセージの新規作成

メール送信
 メッセージの新規作成+送信
 GUI側で作成していたメールの送信①
 GUI側で作成していたメールの送信②

添付ファイルつきメール送信
 メッセージの新規作成+ファイル添付+送信
 メッセージの新規作成+アーカイブファイル添付+送信①
 メッセージの新規作成+アーカイブファイル添付+送信②

メールの添付ファイルを処理
 選択中のメールの添付ファイルを保存
 選択中のメールの添付ファイルの種別を集計①
 選択中のメールの添付ファイルの種別を集計②
 選択中のメールに添付ファイルがあれば背景色を赤く変更

メール返信
 選択中のメールへの返信①
 選択中のメールへの返信②

メール転送(Forward)
 選択中のメールの転送(forward)①
 選択中のメールへの転送②

メールのリダイレクト
 選択中のメールの非破壊転送(redirect)①

メールボックスへのアクセス
 特別なメールボックスのオブジェクト
 特別なメールボックスへのアクセス
 アカウント毎の特別なメールボックスへのアクセス

メールフォルダのパス情報
 メールボックスのパス表記
 選択中のメールボックスのフルパスを取得
 フルパス文字列でメールボックスを指定

メールのフォルダ間の移動
 メールの指定①
 メールの指定②
 メールのコピー
 メールの移動

ビューアウィンドウの操作
 メール.appのウィンドウ種別
 ビューアウィンドウ操作
 message viewerのプロパティ項目と内容①
 message viewerのプロパティ項目と内容②

メールのルールを扱う
 受信メールから条件実行するアクション「ルール」
 「ルール」の「AppleScriptを実行」環境
 テンプレートのメール.app用プラグインScript
 ルールにAppleScript側からアクセス
 ルールの「条件」にアクセスするrule condition
 rule conditionとGUI上の内容との対比
 ルールの「操作」の内容にアクセス
 ルール「操作」の詳細にアクセス

■上級

URL Eventの発生/受信
 メール.appが対応しているURLイベント
 mailto: URLイベント(概要)
 mailto: URLイベントを発生してメール作成
 message: ローカルのメールのURLを求めて表示

メールヘッダー情報の取得
 メッセージヘッダーの内容を取得
 メッセージ(メール)のヘッダーを取得
 ヘッダーの構成例
 ヘッダーからフィールド名一覧を取得
 メーラー名(x-mailer)を集計

メールスレッドの可視化
 スレッドの可視化①
 スレッドの可視化②選択中のメール情報
 スレッドの可視化③各メールヘッダ情報
 スレッドの可視化④.dotデータの作成
 スレッドの可視化⑤.dotデータを表示

メーリングリストの振り分け先フォルダを抽出する
 メーリングリストを処理するルールを抽出
 メッセージ移動先がないルールを抽出

メールの再仕分け
 「メールの再仕分け」とは?
 「メールの再仕分け」Script変更履歴
 「メールの再仕分け」Script処理概要
 「メールの再仕分け」Script①
 「メールの再仕分け」Script②
 「メールの再仕分け」Script③
 「メールの再仕分け」Script④
 「メールの再仕分け」Script⑤
 「メールの再仕分け」Script⑥
 「メールの再仕分け」Script⑦
 「メールの再仕分け」Script⑧

スタイル付きテキストのメール作成+データ差し込み
 スタイル付きメールを作成するために
 書式スタイル付きメールを作成
 HTMLからスタイル付きメールを作成
 RTFからスタイル付きメールを作成①
 RTFからスタイル付きメールを作成②

Numbers上のデータをもとにさしこみメール作成
 データ差し込みメール送信【概要】
 データ差し込みメール送信①
 データ差し込みメール送信②
 データ差し込みメール送信③
 データ差し込みメール送信④

高速・大量メール送信
 高速メール配信サービスの利用
 高速メール配信サービス一覧
 SendGridのAPI Key取得までの道①
 SendGridのAPI Key取得までの道②
 SendGridのAPI Key取得までの道②
 SendGridによるメール配信テスト(メール.app)
 SendGridによるメール配信テスト(メール.app)
 メール.appによるメール配信プログラム(SendGrid使用)
 REST APIによるメール高速配信プログラム
 SendGridを用いたメール送信所要時間(500通)
 メール.appで大量送信後のメモリの状態

ランタイム環境の選択
 AppleScriptの実行環境はたくさんある
 実行中に止まる、落ちるという場合には

資料集

メール.appのAppleScript用語辞書解説
 メール.app用語辞書

メール.appのAppleScript用語の変遷
 メール.app用語辞書の変遷

メール.app&AppleScript Q&A
 AppleScriptに関するQ&A❶
 AppleScriptに関するQ&A❷

AppleScript mini Reference
macOS搭載 AppleScript関連ドキュメント
AppleScript関連の情報源
macOSバージョンとAppleScriptの動向
macOSとAppleScriptの要素技術史
各macOSごとのAppleScript解説(2/4)
各macOSごとのAppleScript解説(3/4)
各macOSごとのAppleScript解説(4/4)
macOS内AppleScript補助ツールの歴史
System EventsのAppleScript用語辞書変更点
AppleScript 各ランタイム環境情報
AppleScript 関連ツール
Cocoa Scripting 関連ツール

AppleScript予約語一覧

サードパーティ製FrameworkやAppleScript Librariesを呼ぶ
Script BundleにFramework / AppleScript Librariesを入れる
Shane StanleyのScript Toolの変遷
Shane StanleyのScript Libraries
Piyomaru SoftwareのScript Libraries (1/2)
Piyomaru SoftwareのScript Libraries (2/2)

エラーコード表
AppleScriptのエラーコード
AppleScript Errors
Mac OS Errors
AppleEvent Errors (1/2)
AppleEvent Errors (2/2)
OSA Errors
あとがき

Posted in Books news | Tagged Mail | 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