Applescriptでバックグラウンドでメール送信する方法

このQ&Aのポイント
  • Applescriptでメール送信する方法について解説します。
  • Applescriptを使用してファイルを開くと自動でメールが送信される仕組みについて説明します。
  • Applescriptを使用して定時送信をする際に、メール作成画面がフォーカスされてしまう問題についての解決策を紹介します。
回答を見る
  • ベストアンサー

Applescript バックグランドでメール送信

以下のような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 ------

  • Mac
  • 回答数6
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • ki073
  • ベストアンサー率77% (491/634)
回答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....がないとだめなはずです。

ttn222111001
質問者

補足

ご回答ありがとうございます。 >完全にバックグラウンドで送信 はい、ご教授頂いた方法で上手くいきました。 >Mailの環境設定の「作成」を選択し、メッセージフォーマットをリッチテキストにすると同じ効果が得られませんか? mailの仕様の話になってしまいますが、環境設定でリッチテキストにしても、scriptで新規作成したメールは標準テキストのままでした。 送信する前に確認したところ、表面上はリッチテキストにはなっている(フォーマット→標準テキストにする、が選択出来たので)ようですが、実際は標準テキストのまま送信されているようです。 この部分が解消されて、冒頭のバックグランドで処理出来れば理想系なのですが、色々とお話をお伺いする限り、どちらかを選ばなくてはいけないようですね。。。

その他の回答 (5)

  • ki073
  • ベストアンサー率77% (491/634)
回答No.5

質問にicalから実行とありましたね、見逃していました。1)は無視してください。3)が怪しいような

  • ki073
  • ベストアンサー率77% (491/634)
回答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 ???も無いですよね??

ttn222111001
質問者

補足

>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の下に貼付けただけでは上手くいきませんでした。

  • ki073
  • ベストアンサー率77% (491/634)
回答No.3

ANo2の補足について >ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。 activate application "Safari" はそういう命令ですので、ならないとおかしいです。その後元に戻るのはよくわかりませんが、別の命令もあるのかな? それはそれとして、 必要がなければ取ってしまえばよいのですが、後に tell application "System Events" tell process "Safari" と続いていたら取ると動かなくなります。 System Eventsを使わない書き方にすれば大丈夫です。 要するに、AppleScriptエディタの「用語説明を開く」でSafri.appを選んだときに表示される命令でできるなら、たぶんうまくいきます。

ttn222111001
質問者

補足

ご回答ありがとうございます。 申し訳ありません言葉足らずでした。 safariの件ではなく、 >>AppleScriptエディタが上に出たまま >ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。 のことになります。 完全なるバックグランドでの処理にはならないのでしょうか?

  • ki073
  • ベストアンサー率77% (491/634)
回答No.2

ANo.1のスクリプトをAppleScriptエディタに取り込んで実行してみてください。(アドレスは変更する必要がありますが) こちらで確かめましたが、AppleScriptエディタが上に出たままで送信できましたが、 このスクリプトだけでは実用になりませんので、前後にスクリプトを書かれているはずですので、それが原因かと。 activate application "Safari" や tell application "System Events" は使ってませんか?

ttn222111001
質問者

補足

ご回答ありがとうございます。 「activate application "Safari"」がありました。 ちなみに、短時間(1秒~2秒)フォーカスが奪われてしまうのは仕方がないのでしょうか。 例えば、テキストエディタで文章を長々と打っている時に、そのスクリプトが作動した際、AppleScriptにフォーカスが移ります。 少し待てばテキストエディタにフォーカスは戻ります。

  • ki073
  • ベストアンサー率77% (491/634)
回答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

ttn222111001
質問者

補足

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

関連するQ&A

  • ApplescriptでFlash Playerを

    flash player の「開く」からurlを打ち込んで表示させたいのですが。上手くいきません。。 safariやfirefoxで開いてしまうのです。 どう直せば良いのでしょうか。教えてください。 あと、開いた時に画面をフルスクリーンにもしたいです。 こんな感じで書いていました。 20分間隔でリフレッシュさせながら、指定のurlのファイルをフルスクリーンで表示させたいのです。 ____________ on idle tell application "Flash Player" to activate tell application "System Events" tell process " Flash Player" open location "http://~ " end tell end tell return 1200 end idle _____________ 教えてくださいよろしくお願いいたします。

  • フローティング時計の常時表示(2)

    http://okwave.jp/qa/q7673001.html# で、toast5さんへのお礼入力が何故かうまく行きませんので、新しい質問とします。 テーマは多数あるウィンドウを仮に消去する Show Desktop 1.6.4 の機能で、気に入ったフローティング時計(QuartsClocks) だけは画面から消さない方法です。toast5さんのヒントをもとにしてAppleScript 超初心者の私ですが見よう見まねで作ってみた次のプログラムで苦労したのは finder window をドックに残すところでした。(ひょっとすると動作速度はベストではないかも知れませんが)機能的にはとりあえずうまくいっているようです。 これがベストかご意見を伺いたいのですが。 tell application "System Events" to keystroke "h" using {command down, option down} tell application "Finder" activate set collapsed of every Finder window to true activate end tell tell application "QuartzClocks" activate end tell

    • ベストアンサー
    • Mac
  • AppleScriptで教えて欲しいです。

    現在、clipboardと同じ名前のフォルダー1つ(例:ABC123)のみ処理する。 →これを、clipboardの名前を含むフォルダー1つ(例:ABC123.4)のみ処理する。 に変更したいです。 ちなみにclipboardの名前を含むフォルダーは、1つしか存在しません。 申し訳ありませんが、実際の業務で使用している下記のスクリプト(無駄な部分も多少あるかと思いますが)を出来る限り変更を加えず、可能でしょうか? 無理であれば、大幅変更も可能ですので、ご教授の程、宜しくお願い致します。 global Num global fp set Num to the clipboard tell application "Finder" my shikyuseihan2data() --支給製版2課データ try duplicate fp to folder "data" of disk "HD" move fp to folder "jus:5)製版行き: 2課使用済" end try end tell --アクセス権 tell application "Terminal" activate do script with command "chmod -R 775 /Volumes/HD/data" quit end tell --支給製版2課のデータ on shikyuseihan2data() tell application "Finder" set x to name of every disk if "jus" is in x then else mount volume "afp://10.1.30.10/jus/" end if try set fp to "jus:5)製版行き:" & Num & ":" as text set fp to fp as alias end try end tell end shikyuseihan2data

    • ベストアンサー
    • Mac
  • applescript システム環境設定 サウンドについて

    初心者なのですが、Applescriptを用いていろいろ出来たらいいなぁと思って現在特訓しています。 今作ろうと思っているのが、システム環境設定の中のサウンドの環境設定をいじるものです。 具体的に言うと「入力」の中のマイク入力の入力レベルの値をとることです。 ライブラリに音の大きさの調節などのサンプルはありました。 またインターネット上で、サウンドを出力する装置の選択なども見つけました。 http://www.measure-zero.jp/blog/2009/Feb/19 【ボリューム調整】 tell application "System Preferences" activate set current pane to pane "com.apple.preference.sound" end tell tell application "System Events" if UI elements enabled then tell slider 1 of group 1 of window 1 of process "System Preferences" if value is 0.5 then set value to 0.8 else set value to 0.5 end if end tell else tell application "System Preferences" activate set current pane to pane "com.apple.preference.universalaccess" display dialog "UI element scripting is not enabled. Check \"Enable access for assistive devices\"" end tell end if end tell この中の slider 1 of group 1 of window 1 of process "System Preferences" とか、例えば今回でしたらボリュームはどのように取得すればよいのかなどはどのように調べるものなのですか? get UI Element of it とかも上手く使えなくて・・・ あともしご存知でしたら、入力音量や入力レベルの取得方法をお教えいただけますでしょうか? 何も知らなくてすいません・・・

  • indesignでのapplescript

    はじめまして、indesign CS3で使用するapplescriptに関しての質問です。 自動で出力をしてくれるスクリプトを作りたいと思い、やってみたのですがうまくいきません。 色々調べて作ってみたのがこれです。 tell application "Finder" set filesInFolder to files in (choose folder) repeat with theFile in filesInFolder if name extension of theFile is "indd" then -- 拡張子を指定 set priset to "B4" -- プリントプリセットを指定 tell application "Adobe InDesign CS3" activate open theFile tell document 1 print using priset without print dialog close saving no end tell end tell end if end repeat end tell ここまではなんとかできたのですが、現段階では1階層下までのinddドキュメントしか読取ってくれません。 1見開きごとにパッケージしてできた子フォルダを一つの親フォルダにまとめることが多いので、フォルダ▶フォルダ▶.inddになります。 これでは親フォルダを指定したときに2階層下の子フォルダに分かれて入っている複数の.inddを一気に出力することができません。 何か解決策はありませんでしょうか? また、現段階に関してのご指摘もございましたらよろしくお願いします。

  • AppleScriptでiCalを動かしてみたが

    以前に下記のようなAppleScriptがネット上に有りましたが(1999年12月28日) ----------------------------------------------実行 set dSta to my date "2013年6月4日火曜日 0:00:00" set dEnd to my date "2013年6月4日火曜日 16:00:00" -- 検索するカレンダー名 set calName to "仕事" -- 結果を格納する変数 set copyText to "" tell application "Calendar" set theList to every event of calendar calName whose (start date ≥ dSta) and (end date ≤ dEnd) repeat with x in theList set aDate to (start date of x) set copyText to copyText & (aDate as text) & tab & summary of x & (ASCII character 10) end repeat end tell -- 結果をクリップボードにコピー set copyText2 to my Sortsc(copyText) set the clipboard to copyText2 on Sortsc(aData) do shell script "echo " & quoted form of aData & " | sort -d" end Sortsc ------------------------------------------------------------- 今回これを利用したい思い osx10.8 applescript エディタ2.5.1にて起動してみようとしましたが下記のような不思議な現象がでました。 set dSta to my date "2013年6月4日火曜日 0:00:00" set dEnd to my date "2013年6月4日火曜日 16:00:00" としていますが date "1999年12月28日火曜日 0:00:00" and end date ≤ date "1999年12月28日火曜日 16:00:00" となってしまった。 なぜそうなったのかが分かりません。 どなたかご存知のお方がおられましたらご教授いただきたいのですが。 -----------------------------------返された値 tell application "Calendar" get every event of calendar "仕事" whose start date ≥ date "1999年12月28日火曜日 0:00:00" and end date ≤ date "1999年12月28日火曜日 16:00:00" --> {} end tell tell current application do shell script "echo '' | sort -d" --> "" end tell tell application "AppleScript Editor" set the clipboard to "" end tell ------------------------------------------------------------- 因にosx10.6 AppleScript2.3にはきちんと返された値は内容が取得されています。

    • ベストアンサー
    • Mac
  • AppleScriptで教えて下さい。

    tell application "System Events" to key code 102 OS10.4以降では、キーボードのかな→英字入力変換出来ますが、10.3では NSCannotCreateScriptCommandError どうしてですか? 10.3と10.6のSystem Events.appをスクリプトエディタで確認したところ、key code の内容は全く同じでした。102に問題があるのでしょうか? それを調べる方法を教えて下さい。 別の記述で可能であれば、それでもかまいません。 宜しくお願い致します。

    • 締切済み
    • Mac
  • AppleScriptがエラーになる

    osx10.8.4  AppleScriptエディタ2.5.1 にて以下の内容でFileMaker11へテキストデータを貼付けようとしましたところ ----------------------- set dbName to "test.fp7" tell application "FileMaker Pro Advanced" activate tell database dbName set contents of field "myText" to "ABC" end tell end tell ----------------------- error "FileMaker Pro Advanced でエラーが起きました:オブジェクトが見つかりません。 ----------------------- とのエラーが出ました。 ちなみにosx10.6.8 AppleScriptエディタ2.3ではテキストは読み込まれます。 osx10.8.4 の仕様が変わったのでしょうか 2・3日前にosのバージョンアップをしましたがそれが関係していたのでしょうか。 どなたかご存知の方がおられましたらご教授下さい。

    • ベストアンサー
    • Mac
  • applescript で pdfを扱いたいんです。

    applescriptで、pdfファイルをアクロバットリーダ6で開けるスクリプトを書いたのですがうまくいきません。どなたか教えて頂きませんか? プレビューで開けるならopen一発で簡単なのですが、アクロバットリーダで開けたいのです。 僕は以下のようなのを書いています。 もしや、アクロバットはpdfを開けるイベントハンドラは対応して無いのでしょうか? tell application "finder" open file "01.pdf" of desktop using application "Adobe Reader 6" end tell

    • ベストアンサー
    • Mac
  • AppleScript 添削希望

    以下のスクリプトを1回実行するとデスクトップにフォルダ「t01」ができるのですが、 2回目以降「t02」とはならず、「test」のままで止まってしまいます。 OS 10.5.8 です。どこか間違ってるのでしょうか。 tell application "Finder" duplicate folder "test" of folder "_test" of desktop to desktop with replacing try set name of folder "test" of desktop to "t01" on error try set name of folder "test" of desktop to "t02" on error try set name of folder "test" of desktop to "t03" end try end try end try end tell

    • ベストアンサー
    • Mac