用于将桌面Gmail链接转换为iOS Gmail应用程序链接的Applescript

时间:2014-01-30 19:55:44

标签: string gmail applescript

我正在制作一个Applescript,它会将桌面Gmail消息链接作为输入,并输出一个可在iOS上运行的URL,以便在iOS Gmail应用中打开相同的消息。

以下是典型的Gmail网址:

https://mail.google.com/mail/u/1/?zx=tso6hataagpp#inbox/143c5ddc34313e1f

以下是在iOS上使用相同网址所需的内容:

googlegmail:/// CV = 143c5ddc34313e1f /帐户ID = 2

一对夫妇注意到:

重要部分(线程标识符)是原始桌面URL中字符串的最后一部分。这就是移动网址中cv =之后需要做的事情。但是,由于Gmail允许多个帐户登录,我们还需要记下/ u /之后的帐户ID号,桌面上的帐号为1,但移动设备为2.看起来桌面网址的编号从0开始,移动网址从1开始编号,具体取决于您首先登录的帐户。因此,对于iOS网址,我们需要将帐户ID号增加1。

另外,我不确定#?zbox之前的“?zx = tso6hataagpp”是什么。我发现有时我的桌面Gmail网址包含该部分,有时则不包括(但仍包含#inbox)。我认为这并不重要,因为我们想要的重要部分位于字符串的末尾,而且总是一致的“mail.google.com/mail/u/”之后的数字。

理想情况下,Applescript会查看桌面Gmail网址的剪贴板,如果找到一个,则会输出相同的网址,然后是换行符,然后是紧跟其后的iOS网址,如下所示:

https://mail.google.com/mail/u/1/?zx=tso6hataagpp#inbox/143c5ddc34313e1f googlegmail:/// CV = 143c5ddc34313e1f /帐户ID = 2

那里的任何Applescript大师都可以告诉我如何一起破解它?

2 个答案:

答案 0 :(得分:0)

尝试以下操作 - 通过do shell script将解析委托给bash。

# Get text from clipboard.
# Test with: "https://mail.google.com/mail/u/1/?zx=tso6hataagpp#inbox/143c5ddc34313e1f"
set hLink to (the clipboard as text)

# Parse the link to extract the information of interest.
set parseResult to do shell script ¬
  "[[ " & quoted form of hLink & " =~ /u/([0-9]+)/.+#inbox/(.+)$ ]] &&
   printf '%s\\n' \"${BASH_REMATCH[1]}\" \"${BASH_REMATCH[2]}\""

# Synthesize the Gmail for iOS link.
set gmLink to "googlemail:///cv=" & ¬
  (paragraph 2 of parseResult) & "/accountId=" & (1 + (paragraph 1 of parseResult))

# Synthesize the result
set res to hLink & linefeed & gmLink

# Put the result back on the clipboard.
set the clipboard to res

答案 1 :(得分:0)

我能想到的最简单的方法是:

这会获得固定的路径组件。即组件5和最后一项

  --https://mail.google.com/mail/u/1/?zx=tso6hataagpp#inbox/143c5ddc34313e1f

set pathUrl to (the clipboard)
set pathComponents to words of pathUrl
if item 1 of pathComponents is "https" and item 2 of pathComponents is "mail.google.com" then

    set composed to pathUrl & return & "googlegmail:///cv=" & last item of pathComponents & "/accountId=" & (((item 5 of pathComponents) as number) + 1)
end if

这确保它始终在“u”之后获得组件(帐户),无论它在何处。 您可以对消息ID执行相同操作。使用“收件箱”

    set composed to ""
    --set pathUrl to "https://mail.google.com/mail/u/1/?zx=tso6hataagpp#inbox/143c5ddc34313e1f"
    set pathUrl to (the clipboard)
    set pathComponents to words of pathUrl
    if item 1 of pathComponents is "https" and item 2 of pathComponents is "mail.google.com" then

        repeat with i from 1 to number of items in pathComponents
            set this_item to item i of pathComponents
            if this_item is "u" then
                set this_item to item (i + 1) of pathComponents
                set composed to pathUrl & return & "googlegmail:///cv=" & last item of pathComponents & "/accountId=" & ((this_item as number) + 1)
 exit repeat
            end if
        end repeat

    end if

  composed