この点で、複製方法はかなり制限されていると思います。より一般的なコピー方法も試しました-メッセージはコピーされますが、IDは返されません。
繰り返しループなしでこれを行う別の方法を次に示します。
- 新しい一時的なカテゴリを作成する
- 元のメッセージを新しいカテゴリでマークする
- 重複 - 重複したメッセージにもカテゴリが付けられます
- 一時的なカテゴリでマークされたメッセージを検索します - オリジナルと複製の 2 つだけを取得する必要があります
- 一時カテゴリを削除する
これがコードです(かなり未完成です):
tell application "Microsoft Outlook"
try
set tempCategory to category "Temporary Category"
on error number -1728
set tempCategory to (make new category with properties {name:"Temporary Category"})
end try
set messageList to selected objects
set origMsg to item 1 of messageList
display dialog "Original Message ID: " & id of origMsg
set msgCat to category of origMsg
set end of msgCat to tempCategory
set category of origMsg to msgCat
duplicate origMsg to drafts
delay 1 -- sigh, it seems to take a bit of time before the category markings are reflected in the spotlight DB
--set msgList to messages whose category contains tempCategory
set currentIdentityFolder to quoted form of POSIX path of (current identity folder as string)
set tempCatMsgs to words of (do shell script "mdfind -onlyin " & currentIdentityFolder & " 'com_microsoft_outlook_categories == " & id of tempCategory & "' | xargs -I % mdls -name com_microsoft_outlook_recordID '%' | cut -d'=' -f2 | sort -u | paste -s -")
if item 1 of tempCatMsgs is (id of origMsg) as text then
set dupMsgId to item 2 of tempCatMsgs
else
set dupMsgId to item 1 of tempCatMsgs
end if
delete tempCategory
display dialog "Original Message ID: " & id of origMsg & return & "Duplicate Message ID: " & dupMsgId
end tell
OL 辞書を使用すると、特定のカテゴリのメッセージを簡単に見つけることができると思っていましたが、代わりにスポットライト検索を使用する必要がありました。これを行うためのより良い方法があると確信しています。
また、メッセージにカテゴリを追加することは私よりも困難でした。これも、より効率的に行うことができると確信しています。