質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

Q&A

解決済

2回答

2433閲覧

【Mac M1環境】applescriptを使って、MS outlookから連続自動メールを送信するコードの書き方。

yujin1202

総合スコア61

AppleScript

AppleScriptは、アップル社が開発しているMac OS用のスクリプト言語。AppleScript本体に限らず、同じ言語で多くのAppleScript対応アプリケーションを操縦することが可能です。 自然言語(英語)に近い構文を持ちます。

Outlook

Microsoft OutlookはMicrosoft Officeの一部として組み込まれている、のユーザー管理とメーラーの機能を持ち合わせたソフトウェアです。

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

0グッド

0クリップ

投稿2022/06/17 07:50

編集2022/06/17 07:53

【質問】
Applescriptsを使って、Mac M1のOutlookを操作して、数百通のメール送信を自動化する方法に関して、教えて下さい。

尚、上の質問は、下記質問の後継質問となります。
7割方解決し掛かっているのですが、質問の内容が変わってきたので、下記質問を閉めた上で、新たな質問とさせて頂きます。
【Mac M1環境】Pythonで開発中ですが、win32comに相当するモジュールはありますか?
https://teratail.com/questions/nnpga3zbo9zqdq

<やりたい事>
下記の様なメールリストが、あります。(実際にには数百の宛先に送付する必要があります。)
イメージ説明

上のメールリストに対して、applescriptを使って、下記の様なOutlookメールを個別に自動送信して、楽をしたいと思っております。
(尚、「手動のBCC送信ではダメなのか?」と周りからは言われたのですが、BCCメールは、経験上、誰も読まないのを知っているので、個別メールにしたいと思っております。)

山田様、 こんにちは!これはテストです。

<現状> メールの自動送信までは出来ております。
ただ、客先毎に、メール本文を微妙に変える事ができずに困っております。(「山田様」と冒頭に書きたいだけです。それ以外の部分は同じです。)

下記のテキストを用意しました。
<name1.txt>

山田 高橋 鈴木 塩見 山崎 村上

<address1.txt>

yamada@gggmail.com takahashi@gggmail.com suzuki@gggmail.com shiomi@gggmail.com yamazaki@gggmail.com murakami@gggmail.com

<現在のコード>

tell application "Microsoft Outlook" set srcFile to ("/Users/xxxx_yyy/Desktop/code/address1.txt") as text set lns to paragraphs of (read srcFile as «class utf8») repeat with ln in lns set the clipboard to ln set theMessage to make new outgoing message with properties {subject:"こんにちは!これはテストです。", plain text content:"Hello"} make new recipient with properties {email address:{address:ln}} at end of to recipients of theMessage send theMessage end repeat end tell

上のコードを動かすと、下記の個別メールが、address1.txt1に記載の受信者に、個別にかつ正常に飛ぶ事を確認しました。
<これは出来ている。>

こんにちは!これはテストです。

ただ、上に書いた様に、それぞれのメールに、{宛先様}を記載したいのです。
つまり、繰り返しになりますが、下記の様にして送信したいと考えております。

<この様に送信したい。>

山田様、 こんにちは!これはテストです。

repeat 文を使って色々とやってみたのですが、どうも上手く行きません。
教えて頂きたく。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

解決しました。
下記が最終コードです。

set org to AppleScript's text item delimiters -- オリジナルの区切り文字を保存 set AppleScript's text item delimiters to "," -- 区切り文字を","に変更 set srcFile to ("/Users/xxxxx_yyy/Desktop/code/product2022/recipient1.csv") as text set lns to paragraphs of (read srcFile as «class utf8») set theAttachment to alias "Users:xxxxx_yyy:Desktop:code:product2022:test.pdf" -- the attachment path set theText to loadText("/Users/xxxxx_yyy/Desktop/code/product2022/promail2.txt") repeat with ln in lns set theList to every text item of ln -- 区切り文字で分解してリストを作成 set theHonbun to (item 1 of theList) -- リストから宛先を取り出して本文を作成 set theAddress to item 2 of theList -- リストからアドレスを取り出し display dialog theHonbun -- 確認のため本文を表示 display dialog theAddress -- 確認のためアドレスを表示 tell application "Microsoft Outlook" set theMessage to make new outgoing message with properties {subject:theHonbun & "様、 先日はありがとうございました。これはテストです。", plain text content:theHonbun & "様、これからは本文です。本日は、こんにちは!テストです。先日はありがとうございました。これはテストです。"} make new recipient with properties {email address:{address:theAddress}} at end of to recipients of theMessage make new attachment at the end of theMessage with properties {file:theAttachment} send theMessage end tell end repeat set AppleScript's text item delimiters to org -- オリジナルの区切り文字に戻す

投稿2022/06/19 12:32

編集2023/06/07 05:22
yujin1202

総合スコア61

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

手元にOutlookがないので直接の回答にはならないのですが、次のような形にするのはどうでしょうか。

まず、元のExcelで、A列が宛先、B列がメールアドレスのシンプルなシートを作り、それをCSVでrecipient.csvという名前で保存します。
中身は次のような形になります。

山田,yamada@gggmail.com 高橋,takahashi@gggmail.com 鈴木,suzuki@gggmail.com

これを1行ずつ読み込み、名前とメールアドレスに分解します。この形なら1つのrepeat文で両方が得られます。
以下、この形で本文とメールアドレスを取り出す例です。

AppleScript

1set org to AppleScript's text item delimiters -- オリジナルの区切り文字を保存 2set AppleScript's text item delimiters to "," -- 区切り文字を","に変更 3 4set srcFile to ("/Users/xxxx_yyy/Desktop/code/recipient.csv") as text 5set lns to paragraphs of (read srcFile as «class utf8») 6repeat with ln in lns 7 8 set theList to every text item of ln -- 区切り文字で分解してリストを作成 9 set theHonbun to (item 1 of theList) & "様 10こんにちは!これはテストです。" -- リストから宛先を取り出して本文を作成 11 set theAddress to item 2 of theList -- リストからアドレスを取り出し 12 13 display dialog theHonbun -- 確認のため本文を表示 14 display dialog theAddress -- 確認のためアドレスを表示 15 16end repeat 17 18set AppleScript's text item delimiters to org -- オリジナルの区切り文字に戻す

投稿2022/06/19 01:34

segavvy

総合スコア1034

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yujin1202

2022/06/19 12:29

週末にご回答を頂き、本当にありがとうございました。 日曜日の午後1時にご回答を確認し、別の部分で詰まったりしたので、時間が掛かりましたが、日曜日の午後9時過ぎに、正常に動作するのを確認できました。 お陰様で、週明けの月曜日朝一に、数百通のメール送信が完了できる事になりました。 感謝のお言葉もありません。ありがとうございました。
segavvy

2022/06/19 12:51

いえいえ、お役にたてたようで良かったです!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問