以下のような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
------
No.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で新規作成したメールは標準テキストのままでした。
送信する前に確認したところ、表面上はリッチテキストにはなっている(フォーマット→標準テキストにする、が選択出来たので)ようですが、実際は標準テキストのまま送信されているようです。
この部分が解消されて、冒頭のバックグランドで処理出来れば理想系なのですが、色々とお話をお伺いする限り、どちらかを選ばなくてはいけないようですね。。。
No.4
- 回答日時:
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の下に貼付けただけでは上手くいきませんでした。
No.3
- 回答日時:
ANo2の補足について
>ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。
activate application "Safari"
はそういう命令ですので、ならないとおかしいです。その後元に戻るのはよくわかりませんが、別の命令もあるのかな?
それはそれとして、
必要がなければ取ってしまえばよいのですが、後に
tell application "System Events"
tell process "Safari"
と続いていたら取ると動かなくなります。
System Eventsを使わない書き方にすれば大丈夫です。
要するに、AppleScriptエディタの「用語説明を開く」でSafri.appを選んだときに表示される命令でできるなら、たぶんうまくいきます。
この回答への補足
ご回答ありがとうございます。
申し訳ありません言葉足らずでした。
safariの件ではなく、
>>AppleScriptエディタが上に出たまま
>ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。
のことになります。
完全なるバックグランドでの処理にはならないのでしょうか?
No.2
- 回答日時:
ANo.1のスクリプトをAppleScriptエディタに取り込んで実行してみてください。
(アドレスは変更する必要がありますが)こちらで確かめましたが、AppleScriptエディタが上に出たままで送信できましたが、
このスクリプトだけでは実用になりませんので、前後にスクリプトを書かれているはずですので、それが原因かと。
activate application "Safari"
や
tell application "System Events"
は使ってませんか?
この回答への補足
ご回答ありがとうございます。
「activate application "Safari"」がありました。
ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。
例えば、テキストエディタで文章を長々と打っている時に、そのスクリプトが作動した際、AppleScriptにフォーカスが移ります。
少し待てばテキストエディタにフォーカスは戻ります。
No.1
- 回答日時:
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がフォーカスされ、新規にウィンドウが開くと言うわけではないのですが、上のツールバーがアクティブになります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- Visual Basic(VBA) Excel・ユーザーフォームの情報を受け渡したい 4 2022/06/08 10:11
- Visual Basic(VBA) エクセルのマクロを使ってメールを送る方法について教えてください 2 2022/03/29 01:36
- Visual Basic(VBA) エクセル VBA メール本文に指定セルに記載されているURLをリンクとして記載する方法 8 2022/08/08 07:50
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) Excel VBA メール作成について 本文の中にExcel でコピーした図を上下に2つ 貼り付けを 2 2023/06/14 01:48
- Visual Basic(VBA) ExcelVBAで、index、match関数を使用して、指定範囲に出力したい 3 2022/10/18 21:53
- Visual Basic(VBA) 実行時エラー´5854´ 文字列型パラメーターが長すぎます。 3 2023/06/08 21:17
- 英語 figureの意味 3 2023/06/12 05:01
- その他(プログラミング・Web制作) laravel 本番環境でメールが送れません。 1 2023/02/17 17:57
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルの表にヘンな枠が・・・
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
Mac de プログラム
-
emacsでCtrl+zを押してサスペン...
-
エクセル時間毎ごとにマクロを...
-
英語版での表示
-
最初の一度しか実行されないロ...
-
SPI非言語の問題 解説お願いします
-
taskkill をバッチ処理できない。
-
ROBOCOPY cmdで正常に処理され...
-
ペイントの「最近使った画像」...
-
バッチファイル内の各コマンド...
-
linuxサーバーのキャッシュをク...
-
デフラグの目安
-
Applescript バックグランドで...
-
エクセルからアクセスのプロシ...
-
タスクスケジュールについて
-
ubuntuでもwindowsのバッチファ...
-
Openイベントを開始させないで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの表にヘンな枠が・・・
-
SONYの音楽ソフト「x-アプリ」...
-
pingは正常なのにtracerouteで...
-
LD_LIBRARY_PATHって?
-
ROBOCOPY cmdで正常に処理され...
-
バッチファイル内の各コマンド...
-
Openイベントを開始させないで...
-
linuxサーバーのキャッシュをク...
-
最初の一度しか実行されないロ...
-
shutdownコマンド実行の残り時...
-
windows10のごみ箱をrd /s /q C...
-
CRONを隔週の日曜日に実行させたい
-
SPI非言語の問題 解説お願いします
-
python IDLEで訂正、削除のやり...
-
常に全画面表示するには・・・
-
エクセルからアクセスのプロシ...
-
信頼済みサイト登録をbatファイ...
-
デフラグは途中で止めても効果...
-
emacsでCtrl+zを押してサスペン...
-
taskkill をバッチ処理できない。
おすすめ情報