1

このコードは、Microsoft Outlookmessagedraftsフォルダーに複製します。

tell application "Microsoft Outlook"

  ...

  -- find the template give an ID
  set theTemplate to message id theID

  -- duplicate the message  
  duplicate theTemplate to drafts

  ...

end tell

追加の処理のために複製への参照が必要です。

残念ながら、これはうまくいきません:

...

-- this will create a duplicate
set theDuplicate to (duplicate theTemplate to drafts)

-- produces an error that reads "The variable theDuplicate is not defined."
display dialog (subject of theDuplicate) & " [" & (id of theDuplicate) & "]"

複製されたばかりのメッセージへの参照を取得するにはどうすればよいですか? その ID は十分な代替手段です。

4

3 に答える 3

1

この点で、複製方法はかなり制限されていると思います。より一般的なコピー方法も試しました-メッセージはコピーされますが、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 辞書を使用すると、特定のカテゴリのメッセージを簡単に見つけることができると思っていましたが、代わりにスポットライト検索を使用する必要がありました。これを行うためのより良い方法があると確信しています。

また、メッセージにカテゴリを追加することは私よりも困難でした。これも、より効率的に行うことができると確信しています。

于 2013-09-13T23:03:22.797 に答える
0
-- create a temporary folder to hold duplicates
on createFolder(theName)

  tell application "Microsoft Outlook"
    set theFolder to make new mail folder with properties {name:theName}
  end tell

end createFolder

-- find folder by name
on findFolder(theName)

  tell application "Microsoft Outlook"
    set theFolder to make new mail folder with properties {name:theName}
  end tell

end findFolder

-- duplicate the message and get a reference
on duplicateIt(theID)

  set theDestination to findFolder("foo bar")

  tell application "Microsoft Outlook"

    --find the template
    set theTemplate to message id theID

    -- duplicate it to the temporary location
    (duplicate theTemplate to theDestination)

    -- get the first item in the folder
    set theDuplicate to item 1 of theDestination

    -- do something with it
    ...

  end tell

end duplicateIt
于 2013-09-17T19:17:34.173 に答える