有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?

Posted

技术标签:

【中文标题】有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?【英文标题】:Does anybody know how to create a shortcut to attach a selected file to iMessage? 【发布时间】:2012-11-28 04:05:33 【问题描述】:

我希望能够在我的桌面上选择一个项目并键入一个快捷方式,以便使用消息应用程序将所选项目附加到新消息中。我尝试在 Finder.app 下的系统偏好设置/键盘/键盘快捷键/应用程序快捷方式中创建一个,键入“共享>消息”,但它没有用。我有一个使用 automator 创建的“带有选择的新电子邮件”的快捷方式,但 Messages 不是一个选项。我还尝试为此搜索 Applescript 或终端命令,以便我可以使用 Better Touch Tool 通过滑动手势来完成。我与一位 Apple 高级顾问交谈过,他说他也不知道该怎么做,也不会在论坛上发布。

如果有人知道如何为此操作创建快捷方式,请告诉我。

更新:我从 /System/Library/PrivateFrameworks/ShareKit.Framework/Versions/A/Plugins/Message s.sharingservice/Contents/MacOS 复制了这个

如果有人知道这条线是否可以用 automator 变成 .service,请告诉我如何做/修改它。

谢谢

/System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Messages .sharingservice/Contents/MacOS/Messages ;出口; NAME-Mac:~ NAME$ /System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Message s.sharingservice/Contents/MacOS/Messages ;出口; -bash: /System/Library/PrivateFrameworks/ShareKit.framework/Versions/A/PlugIns/Message s.sharingservice/Contents/MacOS/Messages

-- 

延迟 0.218623 将 timeoutSeconds 设置为 2.000000 将 uiScript 设置为“单击应用程序进程\“Finder\”的滚动区域 1 组 1 的图像\“测试文件\” 我的 doWithTimeout(uiScript, timeoutSeconds)

-- 消息 延迟 0.263641 将 timeoutSeconds 设置为 2.000000 将uiScript设置为“单击应用程序进程\“Finder\”的滚动区域1组1的菜单1的菜单项\“Share\”的菜单1的菜单项\“Message\” 我的 doWithTimeout(uiScript, timeoutSeconds)

关于 doWithTimeout(uiScript, timeoutSeconds) 将 endDate 设置为(当前日期)+ timeoutSeconds 重复 尝试 运行脚本“告诉应用程序\”系统事件\” " & uiScript & " 结束告诉” 退出重复 关于错误errorMessage 如果 ((当前日期) > endDate) 那么 错误“不能” & uiScript 万一 结束尝试 结束重复 结束doWithTimeout

【问题讨论】:

【参考方案1】:

我看不到如何让它们运行。

您可以设置 Automator 服务,并将其输入设置为“Finder”中的文件和文件夹

并在 Run Applescript Action 中使用此代码。

它有效但主要的问题是找到正确的伙伴。我已经设置好了,所以你可以选择你想要的。可以做更多的工作,我希望让您输入一个名称,它会返回较小的匹配名称和句柄列表。

on run input, parameters

    set buddieList to 
    set splitter to "======"
    tell application "Messages"
        --set buddieList to name of buddies, handle of buddies
        repeat with i from 1 to number of items in buddies
            set this_item to item i of buddies
            copy (name of this_item as string) & splitter & handle of this_item as string to end of buddieList

        end repeat
    end tell


    set inputAlias to item 1 of input as alias

    set text_returned to item 1 of (choose from list buddieList with prompt "TO:" without multiple selections allowed and empty selection allowed)
    set theBuddy to (do shell script "echo  " & quoted form of text_returned & " | awk -F" & splitter & " 'print $2'")
    tell application "Messages"
        set theBuddy to first buddy whose handle is theBuddy

        send inputAlias to theBuddy

    end tell

end run

**更新。

回答您的 cmets: 我实际上并没有使用查找器共享中的搜索字段。所以很高兴看到它的结构实际上与我构建选择器的方式相同。 :-)

但它似乎在搜索您的联系人而不是好友列表。

所以这个新脚本使用搜索联系人姓名,其中包含您输入的任何文本。 就像真正的份额一样。无法保证这些人的号码或电子邮件将与 iMessages 相关联。

另请注意,我会在几分钟内将这些放在一起。所以它不像它可能的那样整洁。但它给了你一些可以玩的东西。

on run input, parameters

    set buddieList to 
    set splitter to "======"
    tell application "Messages"
        activate
        display dialog "Name Contains.." default answer "" buttons "Cancel", "OK" default button 2
        copy the result as list to text_returned, button_pressed

    end tell
    tell application "Contacts"

        set buddies to people whose name contains text_returned

        repeat with a from 1 to number of items in buddies

            set this_name to name of item a of buddies
            set this_email to email of item a of buddies
            set this_phone to phone of item a of buddies
            repeat with e from 1 to number of items in this_email

                set this_email_item to item e of this_email
                if this_email_item is not  then
                    copy (this_name) & splitter & value of this_email_item as string to end of buddieList
                end if
            end repeat

            repeat with e from 1 to number of items in this_phone

                set this_iphone_item to item e of this_phone
                if this_iphone_item is not  then
                    copy (this_name) & splitter & value of this_iphone_item as string to end of buddieList
                end if
            end repeat

        end repeat
    end tell

    tell application "Messages" to set text_returned to item 1 of (choose from list buddieList with prompt "TO:" without multiple selections allowed and empty selection allowed)

    set inputAlias to item 1 of input as alias

    set theBuddy to (do shell script "echo  " & quoted form of text_returned & " | awk -F" & splitter & " 'print $2'")
    tell application "Messages"
        try
            set findBuddy to first buddy whose handle is theBuddy


            send inputAlias to findBuddy
        on error
             display dialog "NO BUDDY Found with " & theBuddy
        end try
    end tell

end run

它旨在放入 Automator 中的 Run Applescript Action 中。作为一项服务。复制并粘贴它以替换所有默认代码。

【讨论】:

它只显示前两个好友。有没有办法显示消息弹出窗口来搜索好友? 感谢您帮助我。我试过了,它会打开消息但不发送所选文件。有没有办法通过使用 shell 脚本的 Automator 服务来选择右键菜单项“Share>Messages”? 它应该被放入 Automator 中的 Run Applescript Action 中。作为一项服务。复制并粘贴它以替换所有默认代码。我刚刚在这里再次测试它并且它有效。请参阅我刚刚附上的图片。 我按照说明操作,它会在后台打开 iMessage。当我把它放在前面时,会出现“名称包含..”窗口。我输入好友的电子邮件地址,联系人应用程序启动,它给了我这个错误:“操作“运行 AppleScript”遇到错误。” 抱歉,我刚刚注意到我发布的脚本中有一个错字。我有“如果 this_iphone_item 不是 那么”而不是“如果 this_email_item 不是 那么”。脚本现已更新。请记住,在控制单击文件并转到服务时,您需要保存设备并运行它。

以上是关于有人知道如何创建一个快捷方式来将选定的文件附加到 iMessage 吗?的主要内容,如果未能解决你的问题,请参考以下文章

警告1909,无法创建快捷方式。怎么办?

如何使用 Powershell 将 ComboBox 选定文件附加到 TextBox?

如何通过使用 R 将每个文件的数据添加为附加行来将不同的 .csv 文件组合成一个完整的文件?

附上文件的快捷方式

新手为Android创建URL应用程序的快捷方式[重复]

如何将选定的工作表另存为新工作簿