AppleScript

[AppleScript]キーノートの書類サイズを指定して作成

自分でも『どうかしてるんじゃ?』と思うけどね…笑

選んだサイズで
Screencapture_666x498_20220109172241

書類作るだけ…
(その都度計算すれば良いじゃん…てのは無しで…苦笑)

Screencapture_536x560_20220109172241


ダウンロード - keynotoe381aee69bb8e9a19ee382b5e382a4e382b9e38299.zip



(************************************************************************

PPDファイルを利用して
キーノートの新規書類を作成します
ポイント指定なので計算面倒だからね

20220109 初回作成



************************************************************************)





on run

set aliasPathToMe to path to me as alias
tell application "Finder"
set theMeFileName to name of aliasPathToMe as text
end tell
set thePathToMe to (POSIX path of aliasPathToMe) as text
set thePathToMe to doReplace(thePathToMe, theMeFileName, "")
set thePathToMe to ("" & thePathToMe & "/ppds/") as text

set aliasDefLoc to (POSIX file thePathToMe)


set theWithPrompt to "PPDファイルを選択してください(gz圧縮ファイルは解凍してから)"
--set theDefLoc to path to printer descriptions folder from local domain
set theDefLoc to aliasDefLoc

set theFileType to "com.adobe.postscript,com.adobe.ppd,public.ppd,public.data" as text
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
open (choose file default location theDefLoc ¬
with prompt theWithPrompt ¬
of type theFileTypeList ¬
without invisibles)
end run


on open DropObj

set thePaperListAll to "" as text
set theFilePath to POSIX path of DropObj
set theReadData to (do shell script "cat '" & theFilePath & "'") as text
set AppleScript's text item delimiters to "\r"
set listData to (every text item of theReadData) as list
set AppleScript's text item delimiters to ""
set numCntList to (count of listData) as number
set numReadList to 1 as number
repeat numCntList times
set theLineData to (item numReadList of listData) as text

if theLineData contains "*?PageSize:" then
set numInList to 1 as number
set numInStartList to numReadList as number
repeat
set numInStartList to numInStartList + 1 as number
set theInData to (item numInStartList of listData) as text
if theInData contains "] (" then

set theInData to doReplace(theInData, "dup ", "") as text
set theInData to doReplace(theInData, " put", "") as text

set theWpt to word 1 of theInData as text
set theHpt to word 2 of theInData as text
set AppleScript's text item delimiters to "("
set listInData to (every text item of theInData) as list
set AppleScript's text item delimiters to ""
set thePaperName to (item 2 of listInData) as text
set thePaperName to doReplace(thePaperName, ")", "") as text

set thePaperList to ("" & thePaperName & "\t" & theWpt & "\t" & theHpt & "") as text

log theInData
log thePaperName
log theWpt
log theHpt
log thePaperList
set thePaperListAll to (thePaperListAll & "\r" & thePaperList) as text



end if

if theInData contains "*End" then
exit repeat
end if
end repeat

log thePaperListAll


end if
set numReadList to numReadList + 1 as number
end repeat

set thePaperListAll to thePaperListAll as text
set AppleScript's text item delimiters to {(ASCII character 13)}
set listPaperListAll to (every text item of thePaperListAll) as list
set numChkDelimiters to (count of listPaperListAll) as number
set AppleScript's text item delimiters to {""}

set theResponce to choose from list listPaperListAll with title "作成する用紙を選んでください" with prompt "作成する作成する用紙を選んでください" without multiple selections allowed and empty selection allowed
if theResponce is false then
error number -128
end if
set theResponce to theResponce as text
set AppleScript's text item delimiters to {(ASCII character 9)}
set theDataListLineData to every text item of theResponce as list
set AppleScript's text item delimiters to {""}

set theLineDate1 to (item 1 of theDataListLineData) as text
set theLineDate2 to (item 2 of theDataListLineData) as text
set theLineDate3 to (item 3 of theDataListLineData) as text

tell application "Keynote"
launch
activate

make new document with properties {name:"" & theLineDate1 & "", width:"" & theLineDate2 & "", height:"" & theLineDate3 & "", slide numbers showing:true}
end tell

end open


--------------文字の置き換えサブルーチン
to doReplace(theText, theOrgStr, theNewStr)
set theOldDelim to AppleScript's text item delimiters
set AppleScript's text item delimiters to theOrgStr
set theTmpList to every text item of theText
set AppleScript's text item delimiters to theNewStr
set theReplaceStr to theTmpList as text
set AppleScript's text item delimiters to theOldDelim
return theReplaceStr
end doReplace

|

[awk]行頭のスペースを削除する(subで置き換え)

Screencapture_1114x650_20211116124059

行頭にある複数の空白(半角スペース)を削除する

ダウンロード - 行頭の空白を削除する.scpt.zip


set theText to " 12 12 12 12"

set theCmdCom to ("echo \"" & theText & "\" |awk '{ sub(\"^([ ]*)\", \"\"); print }'") as text
set theReadData to (do shell script theCmdCom) as text


theReadData

|

[SpotLight]選択範囲でSpotLight検索

macOS10.9ぐらいだっけ?無くなったの…?
ファイル名とか、ブラウザの文字列とか『選択』した状態から右クリックで
『SpotLight検索』って結構使うのにねぇ

訂正
ありました…笑…作っちゃったよ…とほほ
Screencapture_1266x606_20211103164056

Screencapture_1292x716_20211103164340


ダウンロード -選択範囲でSpotLight検索.zip

中身は
20211102-181354

右クリックで
選択範囲でSpotLight検索が出ますので
Screencapture_1558x868_20211102180308


実行すると
検索結果のFinderWindowが開きます
Screencapture_1092x386_20211102180307


設定は
ショートカット使うなら
Screencapture_1308x1152_202111021803082

オートメーター使うなら
Screencapture_1292x1148_202111021803082

ショートカット使うなら
20211102-180419

スクリプトメニューのApplicatonのひとつ上の階層に保存すればこんな風にも使えます
20211102-181910

|

[AppleScript]リソースフォーク(カスタムアイコン)削除

[OS11]書類“〓〓〓〓〓〓”を保存できませんでした。ファイルがロックされています。
https://force4u.cocolog-nifty.com/skywalker/2021/10/post-54992b.html
発生時の
『カスタムアイコン』(リソースフォーク)を削除します


ダウンロード - リソースフォーク削除.zip


(*
リソースフォーク(カスタムアイコン)を削除するための
ドロップレット

*)

--------ダブルクリック起動の始まり
on run
--------ファイル選択ダイアログのデフォルトのディレクトリ
set theDefLoc to path to downloads folder from user domain
--------Uniform Type Identifier指定詳しくは http://goo.gl/6jAQa
set theFileType to "public.data" as text
--------↑のファイルタイプをリスト形式に整形する
set AppleScript's text item delimiters to {","}
set theFileTypeList to every text item of theFileType
--------【プロンプトの文言改行が使えます\nを入れます
set theWithPrompt to theFileType & (ASCII character 13) & "ファイルをえらんでください" & (ASCII character 13) & ""
--------残りのメッセージ
set theWithPromptMes to "選んだファイルの" & (ASCII character 13) & "拡張子を変更します"
--------ダイアログを出して選択されたファイルは「open」に渡す
open (choose file default location theDefLoc ¬
with prompt theWithPrompt & theWithPromptMes ¬
of type theFileTypeList ¬
invisibles true ¬
with multiple selections allowed without showing package contents)
end run



--------ドロップ起動のはじまり
on open DropObj
repeat with ObjFiles in DropObj
--------file informationを取得

set aliasDropFilePass to ObjFiles as alias
set theDropFilePass to POSIX path of aliasDropFilePass
log theDropFilePass
--------ファイル名を変更出来るのはファインダーです
try
set theComandText to ("/usr/bin/xattr -d com.apple.ResourceFork \"" & theDropFilePass & "\"") as text
do shell script theComandText
end try
end repeat
end open




 

|

[AppleScript]FinderWindowの複製(Clone of Clone Window)

単機能アプリClone WindowのAppleScriptクローン
全面のFinder Windowを複製するだけの単機能だけど
結構な利用頻度が出ているので、デザイナー向きなんだろうか?

ダウンロード - clone20of20clone20window.zip


try
tell application "Finder"
activate
set theFolder to (the target of the front window) as alias
set theView to current view of the front Finder window
set {x1, y1} to position of front window
make new Finder window to theFolder
set position of front window to {(x1 + 20), (y1 + 20)}
set current view of front Finder window to theView
end tell
end try


app版はツールバーに登録して
Screencapture-20210627-10542

scpt版はScriptメニューに登録して利用

|

[AppleScript]ターミナルスクリプト

sudo有り 無しの自動化

ダウンロード - terminal.zip


tell application "Terminal"
launch
activate
set objWindowID to (do script "\n\n")
delay 1
do script "df -k" in objWindowID
delay 1
do script "\n\n" in objWindowID
do script "exit" in objWindowID
delay 1
close front window saving no
end tell




----実行ユーザーのログインパスワード
set theAdminPassWord to "password" as text


tell application "Terminal"
activate
launch
set numTemWinNo to (do script "\n\n")
delay 2
do script "/usr/bin/sudo spctl --master-disable" in numTemWinNo
delay 1
do script theAdminPassWord in numTemWinNo
delay 1
do script "\n\n" in numTemWinNo
end tell

|

[AppleScript Basic]Dock関連の値を取得する

tell application "System Events"
tell application process "Dock"
properties
set {dockWidth, dockHeight} to the size of list 1
set thePID to unix id
end tell
tell dock preferences
properties
set theScreenEdge to screen edge as text
set theAutohide to autohide as boolean
set theMagnification to magnification as boolean
set theAnimate to animate as boolean
set theMinimizeEffect to minimize effect as text
set theMagnificationSize to magnification size as number
end tell
end tell

ドックサイズや値.scpt.zip


|

Uniform Type Identifier

Uniform Type Identifier LINK


過去記事のメンテナンス投稿がつづきます…笑
2012年の記事LINK
更新です。


 


AppleScriptで取得
コマンドmdlsで取得の2通りの取得方法があります。


 


20210124_18_25_44


 


↓public.content コンテンツ
↓public.item アイテム
↓public.data データ
↓public.image イメージ画像
↓public.webp WEBP形式 って順番って事になります。


 


mdls -name kMDItemContentType "ファイルパス" | sed -E 's/kMDItemContentType = "(.+)"/\1/'
でも取得できますって事です。


 


ダウンロード - get20uniform20type20identifiers.zip


 

|

【AppleScript】ウィンドウの位置を保存/復元する

10.6で使っていたものを10.11まで利用可能にした
自分用で使っているものなので
デバックも中途ハンバだし
エラー制御もアマアマですが、まぁ使える環境もあるのかな?
まぁ使ってみてよ<<山×さん
--------------------------------------------
反省点
設定ファイルはテキストを使っていたのですが
欲かいて… plist使ったら…ユニコードのエスケープ処理とか入ってしまって
重い…動作が…

『やっつけ』処理多数(やっつけ=動作すれば良しとする)

これは…製品版とか?を買った方が良いかもなぁ…トホホ

--------------------------------------------
制限事項
1:アクセシビリティ設定が必要
2:フォルダ名に制限があります
3:サブモニタやスペースには対応していません。
4:ネットワークドライブはマウントしていないと動作しません
5:外付けHDDで同名のドライブがある場合は正しく動作しません。

----------
■1:アクセシビリティ設定が必要
10.6-10.8
Image00300214_211118_2

10.9-10.11
Image_20180213_104104

SystemUI Serverの登録は以下のように
ドラッグ&ドロップで

20180214_125646

上記の処理をしないと
スクリプトメニューから実行するとエラーで止まります

Image_20180213_104036

--------------------------------------------
■2:フォルダ名に制限があります

区切り文字に『,』『=』を使っています
フォルダ名に『,』『=』があると正しく動作しません。

一般的な禁則文字や記号がフォルダ名にあると正しく動作しません。
--------------------------------------------
■3:サブモニタやスペースには対応していません。

シングルモニタのメインスペースのみ
『全部閉じてから開く』を選択すると他のスペースにあるウィンドも閉じます

サブモニターのあるiMacで確認したら動作したので
デュアルモニタ構成でも大丈夫かも…
--------------------------------------------

インストールしたら
スクリプトメニューから利用します

Website_image00300215_225038

--------------------------------------------
ウィンドウを保存する.scpt

今のウィンドウの状態を保存します

Website_image00300215_225050

設定名=前面のフォルダ名+日付けになっています

--------------------------------------------
ウィンドウを呼び出す.scpt

最初に
『今あるウィンド』を『残す』か『全部閉じてから開くか』を選びます

Website_image00300215_225109

その後で
戻したい設定を選んで実行

Website_image00300215_225358

--------------------------------------------

ツールの中には単機能のツールが入っています

Website_image00300215_225745

--------------------------------------------

インストーラーを使ってインストールする
「install.scpt.zip」をダウンロード

インストーラーを使わずに
自分で展開する場合はこちら
save-finder-window.zip

|

【AppleScript】連番フォルダを作る

AppleScriptで連番フォルダを作ります。





(*
連番フォルダを作ります
20180120 初回作成

*)

---設定項目
---フォルダ名 と 連番をツナグ文字
set theFileNameSep to "_"


tell application "Finder"
display alert "主名称+連番形式でフォルダを作成します\n\n最初のダイアログで『主名称』\n次のダイアログで『何個』作るか指定してください\n最後のダイアログで作成場所を指定します" as informational
end tell


tell application "Finder"
---主名称指定
display dialog "主名称を入力してください" default answer "NewFolderName" with icon 1 default button 2
if button returned of the result is "OK" then
set theFolderNameText to text returned of the result as text
else
return "終了"
end if
---何個作るか指定
display dialog "何個作りますか?(半角数字にしてね)" default answer "10" with icon 1 default button 2
if button returned of the result is "OK" then
set numMakeNumber to text returned of the result as number
else
return "終了"
end if
---作成先指定
set aliasMakeDir to (choose folder with prompt "フォルダを作る場所を指定してください" default location (path to desktop folder from user domain)) as alias
end tell
---フォルダ名初期化
set numFileNumber to 1 as number
---数量の桁数を判定
set theCntNo to the length of characters of (numMakeNumber as text) as number
---フォルダ作成のリピート
repeat numMakeNumber times
---数字のゼロサプレス
if theCntNo = 2 then
if numFileNumber < 10 then
set theFcount to "0" & numFileNumber as text
else
set theFcount to numFileNumber as text
end if
else if theCntNo = 3 then
if numFileNumber < 10 then
set theFcount to "00" & numFileNumber as text
else if numFileNumber < 100 then
set theFcount to "0" & numFileNumber as text
else
set theFcount to numMakeNumber as text
end if
else if theCntNo = 4 then
if numFileNumber < 10 then
set theFcount to "000" & numFileNumber as text
else if numFileNumber < 100 then
set theFcount to "00" & numFileNumber as text
else if numFileNumber < 1000 then
set theFcount to "0" & numFileNumber as text
else
set theFcount to numFileNumber as text
end if
else
set theFcount to numFileNumber as text
end if
---フォルダ名整形(名称 ツナギ文字 連番)
set theMakeFolderName to (theFolderNameText & theFileNameSep & theFcount) as text
---フォルダ名整形(連番 ツナギ文字 名称)
---set theMakeFolderName to (theFcount & theFileNameSep & theFolderNameText) as text
---フォルダ作成
tell application "Finder"
make new folder at aliasMakeDir with properties {name:theMakeFolderName}
end tell
---カウントアップ
set numFileNumber to numFileNumber + 1 as number
end repeat

「make-no-folders.scpt.zip」をダウンロード

「make-no-folders.scpt.rtf」をダウンロード

|

より以前の記事一覧

その他のカテゴリー

Accessibility AccessibilityCheck AccessibilityForm AccessibilityInDesign AccessibilityPDF Acrobat Acrobat Action Acrobat Annotation Acrobat AppleScripts Acrobat Character Acrobat Layer Acrobat PDF Embed API Acrobat PDF Form Print Acrobat Plug-ins Acrobat Portfolios Acrobat Print AcrobatBarcode AcrobatDialog AcrobatForm AcrobatJS AcrobatMenu AcrobatPDF AcrobatStamp AcrobatYouTube AddressBook Adobe Adobe InDesign Adobe Photoshop AdobeAppleScript AdobeBridge AdobeIllustrator AdobeJSX aed Alfresco Android AnimationGif Apple AppleScript AppleScriptBasics AppleScriptCharacter AppleScriptColor AppleScriptDroplet AppleScriptErrorNum AppleScriptFolder AppleScriptFontBook AppleScriptRename AppleScriptTools AppleSymbols Applications Barcode Barcode2D BarcodePostal BetterHTMLExport Book BOX Browser buzz Certificates CharacterEntity CharacterSets Colors Cool Site CSS Cutting DecoMail DecorationMail Design Desktop Diff DJ dmg DNS Documents Download DTP eBook Editer eMail Envelopes ExifTool Facebook FFmpeg File System Fonts FontsTool FontsWeb FOOD FormPrint ftp Gadget Gif Animation Google Google Chrome Enterprise HexEditor HTML info iPhoto ISBN ISO iTunes iWork iWorkNumbers iWorkNumbersCalendar iWorkNumbersTimecard iWorkPages JavaScript JeditX JeditX Regexp JeditXAppleScript JIS jquery Letterpress Library logo Mac Admin Mac Archiver Mac Browser Mac Browser Plugin Mac QuickLook Mac Setup Mac Spotlight Mac Video Map Memo Microsoft Teams Mobby mobileconfig Moto Movies Music Network Basic ntp OCR Office OfficePowerPoint OSX Paint Pantone Paper PDFlib Permission Photo Pictograms Print Public Python QuickLook QuickTime QuickTimeSetting QuickTimeSound Real Media ReName ResourceFork ruby Sample Screen ScreenCast Search Security SEO Sharing SLAResource Sound Spotlight Stamp SWF TCC.db Tutorial PSD TV Twitter Typography Unicode Utilities Video WEB APP WebFont Wedding Windows WindowsMedia XML XMP XPS YouTube YouTube Rss