我是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中使用类。 再次感谢任何帮助!
答案 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就像搞乱了英语,这就是为什么你可以使用first
和last
以及2nd
甚至1th
或3nd
的原因。您可以执行get number of file transfers
之类的内容,但get number of file transfer
也有效。
部分相关:如果您想要检查对象,请结帐properties
。 properties
加上AppleScript编辑器(如get properties of first chat
中所述)是救星。