automatorでコマンドキー入力の組み合わせを自動化?

automatorでアプリケーションの

複数回でワンセットのコマンドキー入力を

行なわせるにはどうしたらいいのでしょうか

教えて下さい

例えば,mailですが

キーコマンド入力

command+6

command+A

option+command+L

をして,

自動で行ないたいのです。

投稿日 2011/12/29 07:54

返信
返信: 30

2011/12/29 09:38 ストップマーク への返信

例えば,mailですが

キーコマンド入力

command+6

command+A

option+command+L

をして,自動で行ないたいのです。

AppleScriptでCommand+6行う方法を知りませんが残りの2つはAppleScriptで可能です。

# AppleScriptが書ければAutomatorを作れますがAppleScriptのほうが動作は軽い。


ユーザがアップロードしたファイル


Messageを落とす時に自動でApply Ruleが行われないのですか?

2011/12/29 17:30 Hiro__S への返信

コマンド+6 が確実に実行されないで、ルールが「選択メッセージを削除」だと、全部削除なんてことになりますよ。

ルールがどうなっているか解りませんが、そういうこともありますね。けど、”コマンド+6 ”を押すことができるかできないかというと”できる”ということを書きたかった訳です。それと、うまく作動させるのは別の話だと思ってました。


迷惑フォルダを指定するだけなら、それをクリックして記録させるだけでいいと思います。それも記録のさせ方によってウインドウを移動すると失敗することもあるかもしれないし,記録後にウインドウを移動させてもちゃんとカーソルが追従してクリックすることもあると思います。


他にルールに

ユーザがアップロードしたファイル

こういう設定をしておけば”ルールを適用”コマンドを使っても、全部削除されれず迷惑メールだけを選択的に削除できそうです。


余談:迷惑メールをすぐに削除したい気持ちは解りますが、後日自動削除しておく方が得策だと思います。


このメッセージは次により編集されています:お子様ランチ.

2011/12/29 18:14 お子様ランチ. への返信

Lionでは動きません。The Action "Watch Me Do" encountered an error.になります。最後のApply Rulesが記録されません。不完全なものを無理矢理ApplicationでSaveして動かすとPointerが動き廻り酷い事になります。


Lionでテストを行ったのですか?

# Snow Leopardとは違いLionでは動かないものが増えています。例えばTextEditのHTMLの拡張子の扱い、SQLでSave Versionを読み書きするためHTML Tagの扱いが難しくなっています。無理に拡張子を弄るとSave Versionを壊したりCrashします。Xcodeも同じでHTMLの拡張子の扱いに注意しないと...


Hiro_Sさん 今回の様なSub menuのAppleScriptをご存知でしたらお教え願えると有り難いのですが...

2011/12/29 18:39 ぴっぴ への返信

Lionでは動きません。The Action "Watch Me Do" encountered an error.になります。

アッ、Lionでしたね。今気づきました、私はSnowLeopradでした。

ところでThe Action "Watch Me Do" encountered an errorはどこをさしているのかは不明ですが、自動記録だと記録の仕方によってエラーが起こるかもしれないです。


無理矢理ApplicationでSaveして動かすとPointerが動き廻り酷い事になります。

ということであれば、コツはマウスを通常の半分くらいのスピードで移動させて記録させます。

もしくは

全くできないのであれば、ユニバーサルアクセスの仕様変更かもしれないです。


このメッセージは次により編集されています:お子様ランチ.

2011/12/29 21:50 お子様ランチ. への返信

お子様ランチ.さん


> 余談:迷惑メールをすぐに削除したい気持ちは解りますが...


スレ主さんからの情報がないので、私が想定した最悪の状況です。また、ご呈示の画像が完成したワークフローの提案にしか見えなかったので、こりゃ大変だと思い書き込みしました。イヤな書き方だったなと反省しております。ごめんなさい。

2011/12/29 21:55 ぴっぴ への返信

ぴっぴさん


> Sub menuのAppleScript


Lion 未導入なので確認ができませんが...。GUIスクリプティングはアプリケーションのバージョンアップで動かなくなる/誤動作する可能性があるので、あまりやらない方が良いと思います。現に Mail は Snow Leopard と Lion でメニュー構成が違いますね。画像感謝です!ということで、以下は iTunes の例です。脱線はご容赦を < スレ主さん


iTunes: メニュー > ファイル > ライブラリ > プレイリストを書き出し... をクリックする例

(Snow Leopard で確認済み)


1. Automatorで記録

2. 「AppleScript を実行」にドラッグ


3. AppleScript Editor

activate application "iTunes"

tell application "System Events"

tell process "iTunes"

(* ここにペースト *)

end tell

end tell


4. set uiScript to "__この部分__" をコピー

activate application "iTunes"

tell application "System Events"

tell process "iTunes"

"click menu item 5 of menu 1 of menu item 10 of menu 1 of menu bar item 3 of menu bar 1 of application process \"iTunes\""

end tell

end tell


5. 整形

activate application "iTunes"

tell application "System Events"

tell process "iTunes"

tell menu 1 of menu item 10 of menu 1 of menu bar item 3 of menu bar 1

click menu item 5

end tell

end tell

end tell


6. 誤作動防止用にif分を加えてコンパイル

activate application "iTunes"

tell application "System Events"

tell process "iTunes"

tell menu 1 of menu item 10 of menu 1 of menu bar item 3 of menu bar 1

if name of menu item 5 is in {"プレイリストを書き出し...", "Export Playlist..."} then

click menu item 5

end if

end tell

end tell

end tell

2011/12/29 21:58 ぴっぴ への返信

また、キーボードショートカットはこんな感じで操作できます。(実際はもっと作り込む必要があります)

これは Mail の例です。(Snow Leopard で確認済み。Lion は未確認です。)


tell application "Mail"

activate


-- コマンド+6

my key_stroke("6", {command down})


-- 選択したメールボックスを返す

get selected mailboxes in message viewer 1


-- その結果が迷惑メールボックスではない場合、falseを返して終了

if item 1 of result is not junk mailbox then return false


-- 以下省略

end tell


-- キーボードショートカットのサブルーチン

on key_stroke(k, ary)

tell application "System Events" to keystroke k using ary

delay 0.5

end key_stroke

2011/12/29 23:14 Hiro__S への返信

ありがとうございます。

お教え頂いた方法は後でじっくり試します。


整形前と後は動作しました。

activate application "iTunes"

tell application "System Events"

tell process "iTunes"

tell menu 1 of menu item 10 of menu 1 of menu bar item 3 of menu bar 1

click menu item 5

end tell

end tell

end tell


Sub menuは下記でないと動作しないのか、直接tell application "iTunes"も実験します。.

activate application "iTunes"

tell application "System Events"

tell process "iTunes"


悩んでたので、これは本当に嬉しいです。感謝 !!!

2011/12/29 23:14 ぴっぴ への返信

先のスクリプト

https://discussionsjapan.apple.com/message/100639880#100639880

の -- 以下省略 の行を


my key_stroke("a", {command down})

my key_stroke("l", {command down, option down})


とすれば、「コマンド+A」「オプション+コマンド+L」となります。「コマンド+A」はまあいいとして、「オプション+コマンド+L」は Apply Rules であることを確認するコード (if xxx = "Apply Rules" then ...) が必要となります。これは Snow Leopard 環境の私には無理です。どなたかお願いします。


一番いいのは junk mailbox の中のメッセージを一括で処理

tell application "Mail"

set ary to messages in junk mailbox

repeat with i in ary

(* ここに処理内容を書く *)

end repeat

end tell

なんですが、「Automator でキーボードショートカットを」というお題からは遠くなるばかりなのでこのへんでご勘弁を。


----------


ストップマークさん


Automator の標準機能では難しいような気がします。option+command+L のルールの内容を書き込んでいただければ別の方法 (AppleScript) でできるかもしれません。(私は環境が古いのでお役に立てないと思いますが...)。それと、話を面倒くさくしてしまったようで申し訳ありません。

2011/12/30 00:32 Hiro__S への返信

大丈夫です。

ご呈示の画像が完成したワークフローの提案にしか見えなかった

ワークフローはMailアクションでなくFinderアクションで作ってあります。

また、真似しづらいように分割もしているので今回のような質問者さんなら、やり方を聞いてくるだろうなぁという予想でワークフローを載せました。

そうでないなら最低

ユーザがアップロードしたファイル

これくらいは載せておきました。


他にも途中まで考えてたのは

ユーザがアップロードしたファイル

と続けて行くという考えもあったのですが、よく考えるとMailのデータベース壊しそうですし、自分で検証もしたくないので考えるのを止めて、雪かきしてました。

2011/12/30 04:43 ストップマーク への返信

1つに纏めたかったのですがSelect AllがErrorになるので3つを合体しただけです。

# Automatorは重いのでAppleScriptで実行するほうが早いです。Automatorに組み込んでも動くと思います。


ApplyRules

activate application "Mail"

tell application "System Events"

tell process "Mail"

tell menu 1 of menu item "Go To favorite Mailbox" of menu 1 of menu bar item "Mailbox" of menu bar 1

click menu item 6

end tell

end tell

end tell

activate application "Mail"

tell application "System Events"

tell process "Mail"

tell menu bar 1

tell menu bar item "Edit"

tell menu 1

click menu item "Select All"

end tell

end tell

end tell

end tell

end tell

activate application "Mail"

tell application "System Events"

tell process "Mail"

tell menu bar 1

tell menu bar item "Message"

tell menu 1

click menu item "Apply Rules"

end tell

end tell

end tell

end tell

end tell

2011/12/30 07:52 ぴっぴ への返信

どなたかLion環境での動作確認願います。


確認方法: Mailを起動し、左ペインにメールボックス"迷惑メール"があることを確認後、

1)「コマンド+6」直後に下のスクリプトを実行 → 結果が何もなしであればOK

2)「コマンド+1」直後に下のスクリプトを実行 → false で終了であればOK


tell application "Mail"

get selected mailboxes in message viewer 1

if item 1 of result is not junk mailbox then return false

end tell


1) と 2) の結果を教えてください。


このメッセージは次により編集されています:Hiro.S

このスレッドはシステム、またはAppleコミュニティチームによってロックされました。 問題解決の参考になる情報であれば、どの投稿にでも投票いただけます。またコミュニティで他の回答を検索することもできます。

automatorでコマンドキー入力の組み合わせを自動化?

Apple サポートコミュニティへようこそ
Apple ユーザ同士でお使いの製品について助け合うフォーラムです。Apple Account を使ってご参加ください。