如何在Applescript中将一个'do shell script'的输出用于另一个

时间:2019-05-23 20:52:24

标签: applescript

我正在使用Mail.app规则(MacOS Mojave),该规则通过使用使用'do shell script'命令的AppleScript为选定的电子邮件创建TaskWarrior任务。

创建任务没有问题,但是我想给任务添加注释,这要求您使用shell脚本的输出-“创建的任务[编号]”。因为注释任务是以下Shell脚本:task [number]注释[您的注释,在我的情况下,是电子邮件的链接]。

我以为我设法从第一个Shell脚本获得了“ Created task [number]”的结果,到第二个Shell脚本的开始即“ task [number]”,但是结果是现在没有指定任何命令-假设“信息”。

我尝试使用延迟1,以便一个shell脚本等待另一个脚本完成,但无济于事。

这是特定的脚本:

tell application "Mail"
    set selectedMessages to selection
    set theMessage to item 1 of selectedMessages
    set messageid to message id of theMessage
    -- Make URL (must use URL-encoded values for "<" and ">")
    set urlText to "message://" & "%3c" & messageid & "%3e"
    set onderwerp to subject of theMessage
    set DueDate to display dialog "Wat is de due date?" default answer "friday"
    do shell script "/usr/local/bin/task add Email over " & onderwerp & " beantwoorden due:" & (text returned of DueDate) & " project:Work +email"
    -- This all works as it should. A task is created with the email subject and a due date that I give it. However, from here something goes wrong
    set task to the result
    set laatste to rich text 1 thru -2 of task
    set annotate to rich text 9 thru -1 of laatste
    do shell script "/usr/local/bin/" & annotate & " annotate" & urlText
end tell

我希望输出结果是任务[number]用消息的urlText注释。但我得到:

  

错误“邮件收到错误:未指定命令-假设   '信息'。没有匹配项。“数字1

1 个答案:

答案 0 :(得分:0)

  

未指定命令-假定为“信息”。

问自己一个问题,为什么TaskWarrior无法看到该命令是“注释”。这是因为您的第二个命令语法错误。更改

& " annotate" &

收件人

& " annotate " &

注意空格。