2013-08-04 54 views
2

我是AppleScript的新手,但從網上搜索瞭解了一下。基本上我想將iMessage消息轉發到一個電子郵件地址。我這樣做有以下腳本:使用AppleScript將所有iMessages轉發至電子郵件

using terms from application "Messages" 
    on message received theMessage from theBuddy for theChat 

     tell application "Mail" 
      set theNewMessage to make new outgoing message with properties {subject:"thesubject", content:theMessage, visible:true} 
      tell theNewMessage 
       make new to recipient at end of to recipients with properties {address:"[email protected]"} 
       send 
      end tell 
     end tell 

    end message received 
end using terms from 

的偉大工程,它把iMessage的在被髮送到我的電子郵件的內容。

現在我試圖用附件做到這一點。我修改了代碼,當收到一個文件時給我4個嘟嘟聲,但沒有任何反應。把這個問題發佈到Apple的網站上,但後來我想我會在這裏有更好的運氣。任何幫助真的會被讚賞我已經搜索了幾個小時谷歌,我有點在死衚衕。

修改代碼:

using terms from application "Messages" 
    on message received theMessage from theBuddy for theChat 

     tell application "Mail" 
      set theNewMessage to make new outgoing message with properties  
       {subject:"thesubject", content:theMessage, visible:true} 
      tell theNewMessage 
       make new to recipient at end of to recipients with properties 
        {address:"[email protected]"} 
       send 
      end tell 
     end tell 

    end message received 
    on completed file transfer theFile 
     beep 4 

    end completed file transfer 
end using terms from 
多一點的樣子,我得知的消息是非常相似的iChat,我發現蘋果的開發者網站的一些示例代碼

所以: https://developer.apple.com/library/mac/#samplecode/iChatAppleScriptSamples/Listings/Add_Incoming_Images_to_iPhoto_Add_incoming_image_to_iPhoto_applescript.html

所以我改變了我代碼如下:

on received file transfer invitation theFileTransfer 
    accept transfer of theFileTransfer 
    tell application "Mail" 
     set theNewMessage to make new outgoing message with properties 
      {subject:"photo", content:"themessage", visible:true} 
     tell theNewMessage 
      make new to recipient at end of to recipients with properties 
       {address:"[email protected]"} 
      send 
     end tell 
    end tell 
end received file transfer invitation 

我也確保在消息偏好中的傳入文件時運行腳本ences窗口,但仍然沒有得到任何迴應。非常令人沮喪的是,我認爲一張圖片可能不是文件傳輸,而是一種內聯文本附件。

綜觀消息字典我發現:

附着 N [INH。富文本]:表示內聯文本附件。這個類主要用於make命令。 元素 包含豐富的文本,字符,段落,單詞,屬性運行。 屬性 文件(文件,r/o):附件syn文件名的文件路徑

但我不知道如何在AppleScript中使用類。 再次,任何幫助將不勝感激!

+0

可惜我不是在我的Mac所以我現在不能把在AS圖書館看看在回答這個問題之前,做研究,我應該。它看起來像你之前代碼中的theMessage是一個字符串。如果你可以找到一種方法來獲得實際的消息對象,那麼你可以使用'get attachment of message_object',並且我確信庫中有一些其他方法可以讓你在運行該代碼之前檢查是否有附件。 – scohe001

回答

0

過去幾天我一直在AppleScript地獄。顯然,當蘋果改變Messages.app如何與事件(一個事件處理程序,而不是每個事件的腳本)交易,他們要麼破產或未能實施file transfer - 相關的東西。

附件不可訪問,因爲您從未獲得過文件對象;寧願(你已經發現)你得到一條消息字符串和用戶和聊天對象。瘸。

雖然(有點兒),但所有這些都有好消息。對於文本消息媒體消息觸發on message received。對於媒體消息,您的處理程序獲取的文本字符串爲空。您可以點擊last file transfer查看是否最近收到了任何內容,並據此採取行動。

這裏的骯髒的黑客我使用的message received處理程序來獲取附件:

set fileName to "" 
if direction of last file transfer is incoming then 
    -- compare diff in seconds 
    if (current date) - (started of last file transfer) < 5 then 
     set f to file of the last file transfer 
     set fileName to POSIX path of f 
    end if 
end if 

請注意,這只是一個想法的開始。自從幾天前我把它弄出來以後,我沒有時間去改進它。如果郵件含有媒體,您將在fileName中獲得文件的完整路徑。

對於事物的Mail.app側,基本上,我沒有他媽的線索。沒有足夠的時間,精力或渴望編寫Apple Mail。爲了使用Messages.app發送圖像,我使用了set theMessage to POSIX file fileName。可能是沿着這些線設置fileattachment

的AppleScript就像搞砸了英語,這就是爲什麼你可以使用firstlast2nd甚至1th3nd。你可以做類似get number of file transfersget number of file transfer也是有效的。

部分相關:checkout出來properties如果你想檢查的對象。 properties加上AppleScript編輯器(如get properties of first chat)是一個救星。

祝你好運。


哦哇。去年8月的。哎呀。

相關問題