apple scriptが動かなくなりました

以前こちらで質問させていただいて

なんとか動くようになった特定のメールが届けば転送するというスクリプですが

10.6から10.9にあげたところ動かなくなりました





property theRecipient : "xxxx@xxxxx"

property theBCCRecipient : "xxxx@xxxxx"



using terms from application "Mail"

on perform mail action with messages theMessages for rule theRule

tell application "Mail"

repeat with thisMessage in theMessages

try

set theJunkStatus to junk mail status of thisMessage

set theReadStatus to read status of thisMessage


if ((theJunkStatus is true) or (theReadStatus is true)) then

return

end if


set theSubject to “xxxxxxxxxx”

set theSender to sender of thisMessage

set theContent to “xxxxxxxxxxxxxxx”


set aMessage to make new outgoing message with properties {visible:false, subject:theSubject, content:theContent}

tell aMessage

make new to recipient at end of to recipients with properties {address:theRecipient}

make new bcc recipient at end of bcc recipients with properties {address:theBCCRecipient}

send

end tell


on error the error_message number the error_number

set the error_text to "Error: " & the error_number & ". " & the error_message

log (the error_text)

end try

end repeat

end tell

end perform mail action with messages

end using terms from





また、特定のメールを受けたら添付ファイルを保存というのも動きません



using terms from application "Mail"

on perform mail action with messages messageList

tell application "Mail"

repeat with eachMessage in messageList

set attachmentList to (get mail attachments of eachMessage)

repeat with eachAttachment in attachmentList

set fileName to name of eachAttachment

save eachAttachment in file (“xxx:xxx:xxxx:” & fileName)

end repeat

end repeat

end tell

end perform mail action with messages

end using terms from





どこかを直せば動くようになるかわかる方いらっしゃいますでしょうか?

投稿日 2014/02/28 00:46

返信
返信: 16

2014/02/28 01:26 nott への返信

失礼致します。 AppleScriptをAppleScript Editor.appでコンパイル出来ないと思います。 エラー表示後にステートメントの選択部分が引用符に移ると思います。 この引用符が正しい文字では無いようです。 とても分かりにくい違いなのですが、以下のディスカッションの正解を参照してみてください。


→ Re: automator中のcdでno such file or directory

2014/03/04 02:06 nott への返信

度々、失礼致します。 少し状況が分からないのですが、上記の一番目のAppleScriptでは、theRecipentとtheBCCRecipientとの変数が定義されていないようです。 それとは無関係でしょうか? また、Sendコマンドをコメントアウトすると、作成したメッセージが下書きフォルダに保存されますので、そのメッセージが正しく作成されているかどうかを確認してみては如何でしょう? あるいは、ルールの適用が上手く行っていない状況でしょうか?

2014/03/04 03:18 T22T への返信

変数は必要なのでしょうか? 10.6の時はこのままで動いていたので、無くてもいけると思っていました。 設定しているルールは 特定のアドレスから添付ファイル付きのメールが届く ↓ このスクリプトでBCCに登録したメールに set theContent to のコメントを添えてメール ↓ 次のルールで 指定したメーラーのフォルダにメールを移動 ↓ using terms from application "Mail"〜で始まる方の スクリプトで添付ファイルを特定のフォルダに保存 まで行っています。 この中でスクリプトが動かない時は メールだけ指定メールフォルダに移動していて、 動いている時は、メールも送信して、添付ファイルも保存されています。 ですのでルール的には問題ないと思われるのですが、 いかがでしょうか? ちなみに動いていない時は下書きにもメールは作成されていないようです

2014/03/04 05:22 nott への返信

度々、失礼致します。 最初の投稿には、2つのAppleScriptがあります。


1)一つ目のAppleScriptについて、引用符を修正済みとしても、theRecipientとtheBCCRecipientの2つの変数が定義されていないと、コンパイルできないか、メールの送信先が無いので、メールは送信されないはずです。 作成したAppleScriptと、メールのルールで指定しているAppleScriptとが同一のものであることを確認してみて下さい。 メールのルールに適用されるAppleScriptは、以下のフォルダに保存されているはずです。 作成したAppleScriptはこのフォルダに保存する必要があります。 また、ルールで指定するAppleScriptはこのフォルダーに保存されているものしか選択できないと思います。


~/Library/Application Scripts/com.apple.mail


2)ルールが2つある状況でしょうか? 一つのルールで一つ目のAppleScriptの実行を指定しており、別のルールで二つ目のAppleScriptを実行させているという状況でしょうか? 

2014/03/04 14:37 nott への返信

度々、失礼致します。 少し整理させてください。


1)ご使用のルールは一つのみで、ルールの適用条件は『特定のアドレスから添付ファイル付きのメールが届く』というもので、ルールの操作の実行に二つのアクション(AppleScriptの実行)を設定しているということでよいでしょうか? 


2)このルールが正しく働いていないと思われる場合は、一つ目のAppleScriptの実行によるメールの転送ができてておらず、二つ目のAppleScriptの実行による添付ファイルの保存はできている、という解釈であっていますでしょうか?


3)その場合、一つ目のAppleScriptでは、メールがジャンクメール(迷惑メール)であったり、既読の状態であればメールの転送は実行されないという記述になっています(以下)。 もしも、この記述があるために、ルールが正しく働いていないという状況であれば、これを削除してみるとよいのではないでしょうか?


if ((theJunkStatus is true) or (theReadStatus is true)) then

return

end if

2014/03/04 19:25 T22T への返信

ご丁寧にありがとうございます。 1)ルールは1つにAppleScriptが1つしか適応できないと思いますので ルール1にメール転送のスクリプト、ルール2にフォルダ移動のルールと、添付ファイル保存のスクリプトを指定しています。 2)スクリプトが動いていないと思われる場合は、転送も添付ファイル保存もできていません。 mail上のルールである、メールフォルダへの移動だけできている状態です 3)ご指摘頂きましたルールの3行を削除してみましたが、特に変わらないようでした。

2014/03/05 01:23 nott への返信

度々、失礼致します。 丁寧にご説明を頂きまして、有り難うございます。 漸く理解できました。


1)メール.appの環境設定>ルールの一覧で、一つ目のルール(メールの転送)が二つ目のルールよりも上位に掲載されていますでしょうか? ご確認下さい。 複数のルールがある場合、上位のルールより順に適用されると思います。 その際、上下の関係でルールが適用される場合とされない場合もあるようです。


2)作成したAppleScriptが、AppleScript Editor.appでコンパイル可能かどうか、ご確認下さい。


3)作成したAppleScriptが、Macの以下のディレクトリーに保存されているものと同じかどうかもご確認下さい。

~/Library/Application Scripts/com.apple.mail


4)2つのAppleScriptは一つにまとめることができます(下記)。 一つのAppleScriptにまとめた場合、ルールも一つに減らすことができますので、1)の適用順位に影響されることもないと思います。 如何でしょう?


property theRecipient : "xxxx@xxxxx"

property theBCCRecipient : "xxxx@xxxxx"



using terms from application "Mail"

on perform mail action with messages theMessages for rule theRule

tell application "Mail"

repeat with thisMessage in theMessages

try



set theJunkStatus to junk mail status of thisMessage # このステートメントが必要かどうか再検討

set theReadStatus to read status of thisMessage # このステートメントが必要かどうか再検討

if ((theJunkStatus is true) or (theReadStatus is true)) then # このステートメントが必要かどうか再検討

return # このステートメントが必要かどうか再検討

end if # このステートメントが必要かどうか再検討

-- メール転送

set theSubject to "xxxxxxxxxx"

set theSender to sender of thisMessage

set theContent to "xxxxxxxxxxxxxxx"

set aMessage to make new outgoing message with properties {visible:false, subject:theSubject, content:theContent}

tell aMessage

make new to recipient at end of to recipients with properties {address:theRecipient}

make new bcc recipient at end of bcc recipients with properties {address:theBCCRecipient}

send

end tell

-- 添付ファイルの保存

set attachmentList to (get mail attachments of thisMessage)

repeat with eachAttachment in attachmentList

set fileName to name of eachAttachment

save eachAttachment in file ("xxx:xxx:xxxx:" & fileName)

end repeat

on error the error_message number the error_number

set the error_text to "Error: " & the error_number & ". " & the error_message

log (the error_text)



end try

end repeat

end tell

end perform mail action with messages

end using terms from

2014/03/05 03:18 T22T への返信

ほんとうに何度もすみません。 1)ルールは転送を1番上、そのつ次に添付保存の順なので問題ないと思います 2)コンパイルのボタンを押すと編集済となり特にエラーはでません。 3)スクリプトはユーザー内の~/Library/Application Scripts/com.apple.mailに入って 4)まとめて頂いたスクリプトに変え、条件をシンプルにしてみたりしましたが、特に動作が変わる気配はありません。 ルールを新たに作り直した場合に「選択したメールボックスのメッセージにルールを適応してもよろしいですか?」 聞かれるので、適応を押すと、実行され転送・添付の保存ができるようです。 なので、スクリプト自体には問題がないように思えますが、 実際にメールを送ると実行されないという… ルールもシンプルに差出人 xxxx@xxxx を含む と applescriptを実行 で そのスクリプトを選ぶという いたってシンプルなものです。 なぜメールが届いた場合にだけ動かないのか全くわかりません。

2014/03/05 03:45 nott への返信

度々、失礼致します。


1)メッセージを選択した状態で、ルールを適用すると、メールの転送も実行され、添付ファイルも保存されるとのことですので、私もルールやAppleScript自体に問題は無い様に思えます。


2)ルールが適用されないメールを受信したときに、未開封の印が付いていますでしょうか? 未開封であるにも拘らず、開封済みの状態で受信している場合は、他のルールが影響していないか確認してみてください。


3)受信メールアカウントがiCloudである場合は、iCloud.comのメールアプリでルール等を適用していないかどうか、確認してみてください。


4)他のAppleScriptを使わないルールは正常に動きますでしょうか?


5)/Library/Scripts/Mail Scripts/Rule Actions/Sample Rule Action Script.scpt のコピーを、 ~/Library/Application Scripts/com.apple.mailフォルダに保存して、これを使ったルールが正常に動きますでしょうか?


6)後は、どうでしょう? Macの基本的なメンテナンス(セーフブートやアクセス権の修正など)くらいしか思いつきません(すみません)。

2014/03/05 04:14 T22T への返信

2)未開封のままです。ルールは1つのみで試してみているので、他のルールは干渉していないと思われます 3)icloudではありません 4)試しに転送のルールを作ってみましたが、転送されました。ただ添付ファイルがされてませんでした。この辺が何か問題があるのかも? 5)動きませんでした。 本体的に何かがおかしいのですかね。もう少しいろいろやってみます。

2014/03/05 20:00 T22T への返信

1)OSは最新の10.9.2です 2)見つからなくて返信まで時間がかってしまいました。 10.8からは初期設定は 〜Library/Mail/V2/MailData のようですね。 ここのものを削除したり、アクセス権の修復をしてみたりしましたが やっぱりダメなようです。 色々検索してみると10.9のMailの不具合も多いようで もしかしたらその1つなのですかね。 違うmacで10.6の環境も残しているので、 そこで動かす方も検討してみます。 長々とすみませんでした。 本当にありがとうございます。

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

apple scriptが動かなくなりました

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