我正在制作一个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大师都可以告诉我如何一起破解它?
答案 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