使用AppleScript将所有iMessage转发到电子邮件

时间:2013-08-04 06:41:45

标签: email applescript attachment forward imessage

我是AppleScript的新手,但从在线搜索中学到了一些东西。基本上我想将iMessage消息转发到电子邮件地址。我用以下脚本做到了这一点:

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:"myemail@gmail.com"}
                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:"myemail@gmail.com"}
                send
            end tell
         end tell

    end message received
    on completed file transfer theFile
        beep 4

    end completed file transfer
end using terms from

因此,通过更多的了解,我了解到消息与iChat非常相似,我在Apple的开发者网站上找到了一些示例代码: 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:"myemail@gmail.com"}
            send
        end tell
    end tell
end received file transfer invitation

我还确保在消息首选项窗口中传入文件时运行脚本,但仍未收到任何响应。非常令人沮丧,我认为图片可能不是文件传输而是内联文本附件。

查看消息词典,我发现:

附件 n [inh。富文本]:表示内联文本附件。该类主要用于make命令。 分子 包含富文本,字符,段落,单词,属性运行。 性能 file(file,r / o):附件同步文件名

的文件路径

但我不知道如何在AppleScript中使用类。 再次感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

过去几天我一直在使用AppleScript地狱。显然,当Apple改变了Messages.app处理事件的方式(一个事件处理程序而不是每个事件的脚本)时,它们破坏或未能实现file transfer相关的东西。

无法访问附件,因为您从未获得过文件对象;相反(你已经发现)你得到一条消息 string 和用户以及聊天对象。跛。

尽管如此,所有这些都有好消息。系统会针对短信媒体消息触发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。可能需要为file设置attachment

AppleScript就像搞乱了英语,这就是为什么你可以使用firstlast以及2nd甚至1th3nd的原因。您可以执行get number of file transfers之类的内容,但get number of file transfer也有效。

部分相关:如果您想要检查对象,请结帐propertiesproperties加上AppleScript编辑器(如get properties of first chat中所述)是救星。

祝你好运。


哇,哇。 去年八月。糟糕。