Apple Scritpでメール自動作成

添付ファイルを指定の名前にリネームして、件名・本分に日付をいれて、メールを自動作成するApple Scriptをつくったので備忘録

ほとんどChat GPTに書いてもらった すげーなあいつ
ちょこちょこうまくいかなかったとこあったので自分でデバッグしたけど、9割方あいつが書いたわ。

やつもワイの言い方が完璧ではないせいで、何度もやりなおしたけど、あそこでエラーでたといってあげればちゃんと訂正できるからすごいわ。

いくつかつまづいたところあるので重点的に書いておく。

set currentDate to current date
set theMonth to month of currentDate as integer
set theDay to day of currentDate as integer

-- 月と日をゼロ埋めして2桁にフォーマット
set formattedMonth to text -2 thru -1 of ("0" & theMonth)
set formattedDay to text -2 thru -1 of ("0" & theDay)

set formattedDate to formattedMonth & formattedDay -- MMDD形式の日付
set formattedDateBody to formattedMonth & "/" & formattedDay -- MM/DD形式の日付
set recipientEmail to "a@example.com" -- 送信先のメールアドレス
set ccEmails to {"b@example.com", "c@example.com"} -- CCのメールアドレスリスト
set bccEmails to {"d@example.com", "e@example.com"} -- BCCのメールアドレスリスト
set subjectLine to "ABC様" & formattedDate & "時点最新スケジュールのご案内" -- 件名
set newAttachmentName to "ABC様" & formattedDate & "時点最新スケジュール" -- 希望の添付ファイル名

set messageBody to "A社
A様
CC. B社 B様, C様

お世話になっております。例文株式会社 例示 太郎です。
ABC様" & formattedDateBody & "時点 最新のスケジュールをご案内いたします。
添付ご査収ください。


ご対応よろしくお願いいたします。

■□━─━─━─━─━─━─━─━─□■
例示 太郎
例文 株式会社
神奈川県横浜市おんJ区VIP町 K丁目L番号
〒231-XXXX
Tel: 045-YYY-YYYY Fax: 045-ZZZ-ZZZZ
■□━─━─━─━─━─━─━─━─□■

" -- メール本文

-- 添付ファイルを選択するダイアログを表示
set chosenFile to choose file with prompt "添付するファイルを選択してください"

-- ファイルのディレクトリを取得
tell application "Finder"
	set DirName to (container of chosenFile) as text
	-- 拡張子を取得
	set ExtName to name extension of chosenFile
	-- ファイル名を変更する
	set NewFilePath to (DirName & newAttachmentName & "." & ExtName) as text
	set name of chosenFile to newAttachmentName & "." & ExtName
end tell

-- リネーム後のファイルパスを再取得
set nameChangeChosenFile to (DirName & newAttachmentName & "." & ExtName)

--2個目の添付ファイルはリネームせずにファイル選択
set chosenFile2 to choose file with prompt "添付するファイルを選択してください"

-- メールを作成
tell application "Mail"
	set newMessage to make new outgoing message with properties {subject:subjectLine, content:messageBody, visible:true}
	tell newMessage
		-- 送信先のメールアドレスを追加
		make new to recipient at end of to recipients with properties {address:recipientEmail}
		-- CCBCCを追加(リストをループ)
		repeat with ccEmail in ccEmails
			make new cc recipient at end of cc recipients with properties {address:ccEmail}
		end repeat
		
		repeat with bccEmail in bccEmails
			make new bcc recipient at end of bcc recipients with properties {address:bccEmail}
		end repeat
		
		-- 添付ファイルを追加(リネームしたファイルとそのままのやつを使用)
		make new attachment with properties {file name:nameChangeChosenFile} at after the last paragraph
		make new attachment with properties {file name:chosenFile2} at after the last paragraph
	end tell
end tell

-- メッセージウィンドウをアクティブにするために、ウィンドウのリストから新しく作成したメッセージを探す
tell application "System Events"
	delay 0.5 -- ウィンドウが作成されるまで少し待機
	tell process "Mail"
		-- メッセージウィンドウを探してアクティブにする
		repeat with w in (get windows)
			if name of w contains subjectLine then
				-- ウィンドウをアクティブにする
				set frontmost to true
				-- ウィンドウの位置とサイズを取得
				set wPosition to position of w
				set wSize to size of w
				
				-- ウィンドウの中心をクリック
				click w -- ウィンドウをクリック
				exit repeat
			end if
		end repeat
	end tell
	
	-- メッセージウィンドウがアクティブになった後、Cmd + Shift + Tを送信
	delay 0.5
	keystroke "t" using {command down, shift down}
end tell

選んだファイルをリネームさせるのが結構大変だったけど、出来上がったコードみるとぜんぜん簡単なのでがっかりする。これは私のChatGPTへの注文の仕方がわるかったので手こずった模様。

一番大変だったのが、添付ファイルをつけると、必ずリッチテキスト形式になってしまうところ。contentをplaintextにするとかぐちゃぐちゃやってくれたんだけど、埒があかなかったので、作成したメッセージウインドウをアクティブにしてそこをマウスクリックでアクティブ化した後、CMD+SHIFT+T送信でプレーンテキストにもどすことにしました。

誰か、メッセージ作成のときに、強制的にプレーンに戻す方法教えて下さい……

Macでメッセージ自動作成したい人、ぜひ参考にしてみて下さい。

この記事が気に入ったらサポートをしてみませんか?