特定メールがどどいたらアップルスクリプト開始

Mail.appに特定の件名のメールがどどいた場合にアップルスクリプトで本文をコピーして

エクセルの特定セルにペーストさせたいです。


実は本文をコピーしてエクセルの特定セルにペーストするまでは、アップルスクリプトができております。


例えば1時間に一度Mail.appを立ち上げてメールチェックし、既読にして、アップルスクリプトを始動、

複数の場合は未読がなくなるまでアップルスクリプトを繰り返す。ということをしたいです。


どなたかおわかりになる方ご教授ください。

よろしくお願いいたします。

iMac 27", macOS 10.12

投稿日 2019/10/19 02:32

返信
返信: 15

2019/10/22 04:19 kas4416 への返信

よくわかりません。


『10:00〜10:05分の5分間にメールが5通きたと仮定して、10:01,10:02,10:03,10:04、10:05に送信したメールが着信したと仮定します。』


新規メールを受信した時点で、AppleScriptが作動するはずですよ。 上記の例では、5回、AppleScriptが実行されるはずです。


メールのルールの条件と、~/Library/Application Scripts/com.apple.mailに入れたAppleScriptとを確認してください。

2019/10/22 05:17 kas4416 への返信

kas4416 さんによる書き込み:

リピート前に、
相手の送信時間を取得して早い時間からその順番で処理を始める構文をつける?


その場合は、1)メールの環境設定>一般で、『新規メッセージを確認:』の項目を、『1分こと』に設定するか、2) messageのdate receivedのプロパティを取得して、リスト化したものをソートして、その順番で処理を実行することができそうです。 しかしながら、1)の方法の方が簡単そうです。 2)の方法は、ちょっと複雑な処理が必要です。

2019/10/19 02:55 kas4416 への返信

『実は本文をコピーしてエクセルの特定セルにペーストするまでは、アップルスクリプトができております。』とのことですが、あとはどうするのでしょうか? 


定期的にスクリプトを実行するということでしょうか? その場合は、Automatorのカレンダーアラームを使います。

AppleScript for Mail.app 古いメールを移動する

2019/10/22 04:47 kas4416 への返信

なるほどです。 そうですね。 その場合は、10:05に1度のみのAppleScriptが実行されるだけですね。 5回ではありません。 私の勘違いでした。 


tell application "Mail"
	set myInbox to mailbox "aaaaa"
	set myMessages to every message of myInbox
	
	repeat with theMessage in myMessages
		if read status of theMessage is false then


このスクリプトでは、repeat with theMessage in myMessagesで、 10:01,10:02,10:03,10:04、10:05の5通のそれぞれのメッセージを対象に、repeat with …end repeat内のスクリプトが実行されるはずです。 つまり、 5通のメッセージのそれぞれについて、処理されると思うのですがいかがでしょうか?

2019/10/22 02:26 T22T への返信

T22T様

以前のアドバイスありがとうございました。


アドバイスを参考にルールを使いアップルスクリプトを動かすことに成功したのですが、

メールボックスの上から動作が始まり、5分に1度メールチェックしているのですが、日付が順番になりません。

受信時間ごとスクリプトが動くようにしたいのですが、ご教授お願いできますでしょうか?


tell application "Mail"

set myInbox to mailbox "aaaaa"

set myMessages to every message of myInbox

repeat with theMessage in myMessages

if read status of theMessage is false then

2019/10/22 04:13 T22T への返信

説明が下手ですみません。

mail.appの設定で新着メッセージの確認を5分ごとにしておくと

10:00〜10:05分の5分間にメールが5通きたと仮定して、10:01,10:02,10:03,10:04、10:05に送信したメールが着信したと仮定します。


tell application "Mail"

set myInbox to mailbox "aaaaa"

set myMessages to every message of myInbox

repeat with theMessage in myMessages

if read status of theMessage is false then


このスクリプトだと10:05のメールから作業を始めてしまいます。

10:01のメールから処理を始めたいののですが、、、、、

いかがでしょうか?


よろしくお願いいたします。

2019/10/22 05:30 T22T への返信

T22T様

ありがとう御座います。

なるほど

1分ごとにしたいところではあるのですが、

説明のため便宜上5分ごとと説明しましたが、本来は30分もしくは1時間ごとにしておきたいです。


教えていただきました「 messageのdate receivedのプロパティを取得して、リスト化したものをソートして、その順番で処理を実行することができそうです。」を勉強してみます。

AppleScript初心者にお付き合いいただきましてありがとう御座います。





2019/10/26 05:58 T22T への返信

T22T様


教えていただいた受信時間のソートの勉強をしていましたが、未だ理解しきれず、

未読をリストにしてそれを反転させてお茶を濁しました。

set myInbox to mailbox "INBOX" of account "Google"

set unreadlist to every message of myInbox whose read status is false

set unreadlist to reverse of unreadlist


今後また不具合が出ましたらご指導ください。

大変ありがとうございました。


2019/10/22 03:36 kas4416 への返信

kas4416 さんによる書き込み:

メールボックスの上から動作が始まり、5分に1度メールチェックしているのですが、日付が順番になりません。

とのことですが、よくわかりません。


受信時間ごとスクリプトが動くようにしたいのですが、ご教授お願いできますでしょうか?

これは、メールを受信した時点で、ルールに従って、AppleScriptが動くはずなのですが。

2019/10/22 04:56 T22T への返信

早速返信ありがとうございます。


はい

その通りです。

repeat内は

本文をクリップボードにコピーして

エクセルを立ち上げ

特定セルにペースト

、、、、、、、、

end repeat


といった内容です。


リピート前に、

相手の送信時間を取得して早い時間からその順番で処理を始める構文をつける?

どこに、どのような構文を足せばよいのか教えてください。


よろしくお願いします。




2019/10/22 04:40 T22T への返信

トンチンカンなことを言っていたらすみません。

1時間に100通のメールが来るとして

mail.appの設定はPOPで受信をしており、新着メッセージの確認を5分ごとにしております。

10:05分に受信確認した時に10:01,10:02,10:03,10:04、10:05の5通が一度にメールボックスに入ってきます。


その際5通の処理を始めるのですが、10:05分のメールから処理を始めてしまいます。

10:01のメールから処理を始める方法を伺いたいです。


AppleScript初心者で申し訳ありません。

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

特定メールがどどいたらアップルスクリプト開始

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