アプリ版:「スタンプのみでお礼する」機能のリリースについて

以下のようなApplescriptがあります。

ファイルを開くと自動でメールを送信する物です。

件名:
あいうえお

本文:
かきくけこ

宛先:
xxxxx@xxxxx.xx

icalを使って定時送信をしているのですが、以下のスクリプトですと、起動するたびにメール作成の画面がフォーカスされてしまいます。常時バックグランドで処理をしたいのですがどうすればいいでしょうか。

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

tell application "Mail"
set newMessage to make new outgoing message with properties {subject:"あいうえお", content:"かきくけこ", visible:true}
tell newMessage to make new to recipient at end of to recipients with properties {address:"xxxxx@xxxxx.xx"}
end tell

tell application "System Events"
tell application process "Mail" to set frontmost to true
keystroke "T" using {command down, shift down}
end tell

tell application "System Events"
tell application process "Mail" to set frontmost to true
keystroke "D" using {command down, shift down}
end tell

------

A 回答 (6件)

ANo.4の補足について


こちらで確認したことですが
ANo.1のスクリプトをAppleScriptエディタに貼付けて(addressは実在するものに変更)、スクリプトを保存。ファイル名をmessage.scptとし、ファイルフォーマットはスクリプトで保存しました。
次にiCalで新規イベントを作成し、通知にスクリプト実行、message.scptを選びました。時刻を少し先にしました。
その時刻がくるとメールを完全にバックグラウンドで送信したことは確認されました。AppleScriptエディタは起動することはありません。
確認したバージョンは10.7.2です。 10.6でも同じだと思います。
同じ方法で確認してください。

それとリッチテキストの件ですが、バックグラウンドで変更する方法は見つかりませんでした。
Mailの環境設定の「作成」を選択し、メッセージフォーマットをリッチテキストにすると同じ効果が得られませんか?

フォアグランドになってもよいのなら
activate application "Mail"
tell application "System Events"
tell application process "Mail" to set frontmost to true
keystroke "T" using {command down, shift down}
end tell
です。最初のactivate....がないとだめなはずです。

この回答への補足

ご回答ありがとうございます。

>完全にバックグラウンドで送信

はい、ご教授頂いた方法で上手くいきました。

>Mailの環境設定の「作成」を選択し、メッセージフォーマットをリッチテキストにすると同じ効果が得られませんか?

mailの仕様の話になってしまいますが、環境設定でリッチテキストにしても、scriptで新規作成したメールは標準テキストのままでした。
送信する前に確認したところ、表面上はリッチテキストにはなっている(フォーマット→標準テキストにする、が選択出来たので)ようですが、実際は標準テキストのまま送信されているようです。

この部分が解消されて、冒頭のバックグランドで処理出来れば理想系なのですが、色々とお話をお伺いする限り、どちらかを選ばなくてはいけないようですね。。。

補足日時:2011/11/13 22:13
    • good
    • 0

質問にicalから実行とありましたね、見逃していました。

1)は無視してください。3)が怪しいような
    • good
    • 0

ANo.3の補足について


全体像が見えないので理解できていないのですが、

1) まず、AppleScriptはどのようにして実行していますか?
AppleScriptエディタで書いてそのまま実行ボタンを押して実行しているのでしょうか?
それともアプリケーションとして保存して、Finderでダブルクリックして?
>例えば、テキストエディタで文章を長々と打っている時に、そのスクリプトが作動した際、AppleScriptにフォーカスが移ります。
ということは、周期的に自動実行しているのかな?

2)テキストエディタで作業している最中に、突然 AppleScriptエディタのが短時間上に出てくるのでしょうか?

ちょっと確認なのですが、
3) 呼び出しているアプリケーションは、mailとsafariだけなのでしょか?
tell application ????で呼びされているのはその2つだけですか?
tell application "AppleScript Editor"はないですよね??
tell application "System Events"はもうないですよね?
activate application ???も無いですよね??

この回答への補足

>2)テキストエディタで作業している最中に、突然 AppleScriptエディタのが短時間上に出てくるのでしょうか?

テキストエディタで作業しておりますので、上部のメニューバーは当然「テキストエディタ」のメニューバーになっています。
しかし、icalで設定した指定時刻になり、Scriptが動くと、「AppleScriptエディタ」のメニューバーが短時間表示され、時間をおいて「テキストエディタ」のメニューバーに戻ります。

>3) 呼び出しているアプリケーションは、mailとsafariだけなのでしょか?
はい、いずれもありません。
ご教授頂いたスクリプトのみで稼働させています。

便乗で申し訳ないのですが、質問時に貼付けましたスクリプトで以下の物があります。

>tell application "System Events"
>tell application process "Mail" to set frontmost to true
>keystroke "T" using {command down, shift down}
>end tell

新規メールのフォーマットをリッチテキストに変換する物ですが、ご教授頂いたScriptはこれがございませんので、標準テキストで送信されてしまい、その後の処理が上手くいかない状態となっています。mailの環境設定で、はじめからリッチテキストの設定にしておけば良いのかな?と思い変更しましたが、上手くいきませんでした。送信する際に変更しないと駄目なようです。

上記を盛り込む事は可能でしょうか。ちなみにご教授頂いたScriptの下に貼付けただけでは上手くいきませんでした。

補足日時:2011/11/13 12:02
    • good
    • 0

ANo2の補足について


>ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。
activate application "Safari"
はそういう命令ですので、ならないとおかしいです。その後元に戻るのはよくわかりませんが、別の命令もあるのかな?

それはそれとして、
必要がなければ取ってしまえばよいのですが、後に
tell application "System Events"
tell process "Safari"
と続いていたら取ると動かなくなります。

System Eventsを使わない書き方にすれば大丈夫です。
要するに、AppleScriptエディタの「用語説明を開く」でSafri.appを選んだときに表示される命令でできるなら、たぶんうまくいきます。

この回答への補足

ご回答ありがとうございます。

申し訳ありません言葉足らずでした。

safariの件ではなく、

>>AppleScriptエディタが上に出たまま
>ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。

のことになります。

完全なるバックグランドでの処理にはならないのでしょうか?

補足日時:2011/11/12 22:46
    • good
    • 0

ANo.1のスクリプトをAppleScriptエディタに取り込んで実行してみてください。

(アドレスは変更する必要がありますが)
こちらで確かめましたが、AppleScriptエディタが上に出たままで送信できましたが、

このスクリプトだけでは実用になりませんので、前後にスクリプトを書かれているはずですので、それが原因かと。
activate application "Safari"

tell application "System Events"
は使ってませんか?

この回答への補足

ご回答ありがとうございます。

「activate application "Safari"」がありました。

ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。

例えば、テキストエディタで文章を長々と打っている時に、そのスクリプトが作動した際、AppleScriptにフォーカスが移ります。
少し待てばテキストエディタにフォーカスは戻ります。

補足日時:2011/11/12 17:16
    • good
    • 0

2行目のvisible:trueと、その後のtell application "System Events"以降があるからです。



tell application "Mail"
set newMessage to make new outgoing message with properties {subject:"あいうえお", content:"かきくけこ"}
tell newMessage to make new to recipient at end of to recipients with properties {address:"xxxxx@xxxxx.xx"}
send newMessage
end tell

この回答への補足

ご回答ありがとうございます。

mailがフォーカスされる事は無くなりましたが、変わりにsafariがフォーカスされ、新規にウィンドウが開くと言うわけではないのですが、上のツールバーがアクティブになります。

補足日時:2011/11/11 14:39
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!