Jonouchi Kouyo's Blog

カテゴリ:AppleScript

今までMacのディスプレイを90度回転するのに

・システム環境設定
・Option+Commandを押しながらディスプレイ
・回転で90°を選択

と、3つのステップを踏んで行っていたんですが、

24

何回もやっているとさすがに面倒になってきたので、スクリプトで行うことにしました。
以下、そのソースです。
-- ディスプレイ回転Script

property rotation00 : 1
property rotation90 : 2

tell application "System Preferences"
	quit
	delay 1
	launch
	activate
	
	tell application "System Events"
	key down {option, command}
	end tell
	
	set current pane to pane "com.apple.preference.displays"
	
	tell application "System Events"
	key up {option, command}
		
		tell process "System Preferences"
			tell tab group 1 of window "カラー LCD"
				click pop up button 1 -- "回転:" を選択
				
				tell pop up button 1
					repeat with i from 1 to 4
						if selected of menu item i of menu 1 is true then
							exit repeat
						end if
					end repeat
					
					if i is equal to 1 then
						set roteteMenuItem to rotation90
					else
						set roteteMenuItem to rotation00
					end if
				click menu item roteteMenuItem of menu 1
					
				end tell
			end tell
		end tell
	end tell
end tell

tell application "System Preferences"
	quit
end tell
このスクリプトを実行すると通常の位置から90°回転します。90°回転した状態から実行すると、通常に戻ります

key down をした後に、ちゃんと key up をしておかないと、90°回転した後に、マウスカーソルが”+”になったまま応答しなくなるので注意して下さい。σ(^ ^;

画面を90°回転させても、”ドラックパッド”の動作は回転前の状態と変わらないので、カーソルを動かすのがめちゃめちゃ難しくなります(笑)

但し、マウスを接続した場合は見た目通りに動かせますので、どうしても慣れない人はマウスを接続してみてください。 

ネットで拾った画像を整理するため、一旦ファイル名を作成日でリネームしてから整理することにした。
以下、リネーム処理で使ったスクリプトです。

1.リネームするファイルが入ったフォルダを指定する。
2.フォルダにある全ファイル名を取得する。
3.ファイルの作成日を取得し、年月日時分秒を数値に変換する(先頭ゼロ埋め)。
4.既に同じファイル名が存在しないか確認し、同じ名前のファイルがある場合は末尾に任意の番号をつける。
5.ファイルをリネームする。
 
(*
	選択したフォルダ内のファイル名を
	作成日付でリネームする
*)

on run
	tell choose folder
			
			-- キャンセルを選んだ場合は終了
		on error errText number errNum
			if errNum is not -128 then
				-- キャンセル以外のエラーが発生した場合は内容を表示
				display dialog (errText) & "\nerror number:" & (errNum) buttons {"OK"} default button "OK" with icon 2
			end if
			return
		end try
		
		-- 選択したフォルダの全ファイル名取得
		set theFiles to every file of aFol
		
		set newFiles to {}
		
		-- ファイルの数だけ以下を実行
		repeat with aFile in theFiles
			
			-- 作成日取得
			set cDate to creation date of aFile
			
			set fy to year of cDate
			set fmo to month of cDate as number
			set fd to day of cDate
			
			set fH to hours of cDate
			set fmi to minutes of cDate
			set fs to seconds of cDate
			
			-- 先頭ゼロ埋め
			set fmo to my fillzero(fmo)
			set fd to my fillzero(fd)
			set fH to my fillzero(fH)
			set fmi to my fillzero(fmi)
			set fs to my fillzero(fs)
			
			-- 拡張子の取得
			set ext to name extension of aFile
			
			-- 新ファイル名(拡張子なし)
			set newNameNoExt to fy & fmo & fd & "_" & fH & fmi & fs as Unicode text
			-- 新ファイル名(拡張子あり)			
			set newName to newNameNoExt & "." & ext as Unicode text
			
			set cnt to 1
			-- リネームしたファイルの中から同じものがないか検索する
			repeat with tmpFile in newFiles
				-- リネーム後のファイル名が存在した場合
				if newName = (tmpFile as Unicode text) then
					-- 一意番号付与
					set newName to newNameNoExt & " (" & cnt & ")." & ext as Unicode text
					set cnt to cnt + 1
				end if
			end repeat
			
			-- ファイル名変更
			set name of aFile to newName
			-- リネームリストへ追加
			set the end of newFiles to newName
			
		end repeat
	end tell
	
	display dialog "リネーム処理が完了しました"
	
end run

(*
	ゼロ埋め
*)
on fillzero(srcNo)
	set dstNo to "0" & srcNo
	
	if (length of dstNo) > 2 then
		set dstNo to characters ((length of dstNo) - 1) thru (length of dstNo) of dstNo as text
	end if
	
	return dstNo
end fillzero

ログイン時にディスプレイの輝度が勝手に自動調節されてしまうため、以下のスクリプトを作成してログイン時に自動設定するようにした。
 
  1. ディスプレイの輝度を設定するAppleScriptの作成し.app形式で保存
    • tell application "System Preferences"
      	activate
      	set current pane to pane "com.apple.preference.displays"
      end tell
      
      tell application "System Events"
      	if UI elements enabled then
      		tell process "System Preferences"
      			
      			tell group 2 of tab group 1 of window "カラー LCD"
      				-- 輝度を0.9に設定
      				set value of slider 1 to 0.9
      				-- 輝度を自動調節 をOFF
      				if (value of checkbox 1 = 1) then
      					click checkbox 1
      				end if
      			end tell
      			
      		end tell
      	else
      		display dialog "補助記憶装置にアクセスできるようよう設定して下さい"
      	end if
      end tell
      
      quit application "System Preferences"
      
  2. システム環境設定の「ユーザーとグループ」を開き、ログイン項目に上記appを追加

AppleScript にて
最前面のウインドウの位置を取得するやり方
on run    
  tell application "System Events"
    set pList to name of every process whose frontmost is true
    set appName to item 1 of pList
    
    tell process appName
      set topWindow to window 1
      set topWindowSize to size of topWindow
      set topWindowPosition to position of topWindow
      
      -- 位置とサイズを表示
      set posStr to "位置:(" & item 1 of topWindowPosition ¬
        & ", " & item 2 of topWindowPosition & ¬
        "), サイズ:(" & item 1 of topWindowSize & ", " & item 2 of topWindowSize & ")"
      
      display dialog posStr
    end tell
  end tell
end run

このページのトップヘ