最近看了几篇关于阅读的文章,觉得需要重新梳理一下自己在手机上的阅读和阅读后的管理。今天来分享一下怎么将手机上正在阅读的文章自动发送到 Mac 上继续完成阅读。

这个 Workflow 是在 Hum 在少数派的分享《把你的 iOS 设备变成控制 Mac 的「遥控器」》中的例一之上更改的。利用原文中的例子可以实现在 iOS 设备上将文章发送到 Mac 上进行稍后阅读,这个过程的原理如下:

但是 Hum 的文章中并不支持发送多个链接到 Mac 中打开。也就是说如果你分享了一次但并没有在 Mac 上打开该链接之后就分享了第二个链接,此时 Mac 上只会打开第一个链接而已。基于此我想到了两个改进思路:

  • 取代到原先 AppleScript 上写死的文档路径,改为参数
  • 在同一个文档下添加新链接,用“\”分割它们。用循环语句在脚本中打开多个网页

Hum 的 Workflow 每次执行都会在 DropBox 中新生成一个 ReadLaterURL.md 的文件(多次执行就会使文件名变成 ReadLaterURL(1).md 以区分)。Hazel 支持使用「contains」这样模糊的搜索方式,所以文件名的后缀不影响判断。但是在 AppleScript 中获取 URL 的路径被写死为 ReadLaterURL.md,造成只能打开一个链接的问题。

其实方法一的改进应该是比较简单的,但是我搜索了一下没找到 Hazel 怎么(或者说是否能)传递文件名这个参数,所以更换思路,使用了第二种方法进行改进。

具体流程:

Step1:在 iOS 设备看到需要在 Mac 上打开的网页,通过 Workflow 把链接添加到 DropBox 下的 ReadLaterURL.md 文档中(如果没有这个文档会自动帮你创建)。为了分割多个链接。每个链接的最后使用反斜杠说明链接地址已结束。

Step2:在 Hazel 里设置条件触发文件夹,这样发送到这个文件夹里的文件,如果满足条件,Hazel 就会作出你设定好的处理:

Step3:Hazel 里的动作名称也就是 Name 这一栏可以是随意的,但剩下的要按要求来做。整体的结果是:当在指定文件夹中,发现名称为 ReadLaterURL 的文件,就执行两个动作:

第一个动作是获取文本文档内容,作为链接在 Mac 上用 Chrome 打开。就是这一步需要用到 Applescript。第二个动作是前一个动作执行成功后删除文本文档。

以上步骤大致和 Hum 相似,我也就复制他的描述和图片过来啦~

Step4:填入核心的 Applescript:

set the_file to "指定文件路径"
set URLs to (read the_file)
set oldDelimiters to AppleScript's text item delimiters
set AppleScript's text item delimiters to "\\"
set theArray to every text item of URLs
set AppleScript's text item delimiters to oldDelimiters
set num to 1
repeat (count of theArray) - 1 times
	set theURL to item num of theArray
	tell application "Google Chrome"
		if windows ≠ {} then
			make new tab at the end of window 1 with properties {URL:theURL}
		else
			make new window
			set URL of (active tab of window 1) to theURL
		end if
		activate
	end tell
	set num to num + 1
end repeat

文件路径必须和你在 workflow 中使用的 DropBox 的路径相同。比如我的是:

/Users/chenjiahao/Dropbox/Temporary/inbox/ReadLaterURL.md

这里其实是使用一个循环将文档中的链接用分割符切割,之后一个个的使用 Chrome 打开。

这个 Workflow 需要使用到的 App 有: