前不久,著名的 iOS 文本编辑器 Drafts 迎来了一次大更新。如果你还不了解 Drafts 5 有哪些变化,你可以阅读《顶级 iOS 文本处理应用 Drafts 迎来大更新:Drafts 5.0》一文来了解。
如果你已经下载并安装了 Drafts 5,可能会发现你在 Drafts 4 中的旧数据并没有自动同步过去。不过不用着急——开发者其实已经为数据的迁移做好了安排;对于一些无法兼容的数据和动作,也存在对应的解决方案。本文将指导你尽可能完美地从 Drafts 4 迁移到 Drafts 5。
使用「从 Drafts 4 迁移」来迁移
「从 Drafts 4 迁移」这一功能是开发者为 Drafts 4 的老用户准备的功能,通过这一功能你可以将 Drafts 4 中的草稿和动作迁移至 Drafts 5,这一功能是最基本的迁移方法。
使用这一功能前,首先应当保证 Drafts 4 安装在你的设备上。打开 Drafts 5 的设置,滑动至底部找到「Migrate from Drafts 4」选项,在弹出的界面中选择打算迁移的项目即可。
在迁移草稿时你可以批量为它们指定一个标签,方便后续整理。而动作的迁移支持分别迁移动作(Actions)和键盘快捷键(Keys),其中动作会按照在 Drafts 4 中的分组在 Drafts 5 中新建对应的分组来容纳;键盘快捷键则会新建一个「Migrated Keys」分组,以动作的形式容纳。动作的迁移会自动跳过在 Drafts 5 中不兼容的动作,例如 Drafts 5 中由于 API 问题取消了「保存到 Box」这个步骤,那么所有牵涉到这个步骤的动作都会被跳过。
在迁移前请注意:如果你之前用 Workflow 或其它方法手动迁移过一些草稿到 Drafts 5,请务必在运行「从 Drafts 4 迁移」这一功能前将这些手动迁移的草稿删除,否则会出现重复的情况。
修改部分 JavaScript 代码
在迁移完草稿和动作后,也许你会想检查一下你的动作是否都能运行。
Drafts 5 更改了一部分 JavaScript 中的对象属性,诸如 getSelectedText()
这样的函数如今需要写作 editor.getSelectedText()
才会生效;原先的 commit()
函数则变成了 draft.update()
。在动作迁移过程中,大部分这样的不同之处会被自动纠正,但如果你发现含 JavaScript 的动作迁移后无法运行,请尝试着检查问题是否是由于这样的语法变动引起的。你可以在官方的 project wiki查看语法参考。
修改部分不可用的动作
你可能已经注意到,有一些动作在导入时被跳过了。由于服务的 API 变更和多种因素,Drafts 5 取消了 Box、Google+、Path 这三个发布动作。此外,很多人反映印象笔记的国内版在 Drafts 5 中无法授权。以下是这些问题的部分解决方案:
用 URL Scheme 代替无法授权的印象笔记
其实 Drafts 5 自带的印象笔记功能即是用 URL Schemes 实现的。如果你还不了解 URL Schemes 是什么,我建议阅读 Hum 的 URL Schemes 使用详解。
如图,新建一个动作并插入一个「URL」步骤,并在 TEMPLATE 中填入 evernote://x-callback-url/new-note?type=text&title=[[title]]&text=[[body]]&latitude=[[created_latitude]]&longitude=[[created_longitude]]
,保存即可。需要注意的是,在 TEMPLATE 界面需要开启「URL encode tags」这一选项,否则处理中文内容时就会出错。
由于 URL Schemes 是一种本地的方法,所以使用 URL Schemes 的动作不需要联网也可以运行。当然,它的缺陷就是需要跳转到印象笔记应用再跳转回来,使用体验会略差一些。
用 WebDAV 方法代替被取消的 Box 动作
Box 是一个知名的网盘服务,虽然由于 API 问题无法直接保存文件,但我们仍能找到折中的办法。Box 支持 WebDAV 这种协议,我们只需新建一个动作并插入一个「WebDAV」步骤,然后保存并直接运行。在第一次运行时,Drafts 会要求填入对应的服务器地址和登录凭证。此时在 Host 一栏填入 https://day.box.com/dav
,并在 Username 和 Password 分别填入你平时登录 Box 使用的账号和密码即可。
修改 Workflow 和其它自动化脚本
Drafts 内部的迁移完成了,我们再来看看 Drafts 之外的变动。当我们迁移到 Drafts 5 时,很多原先配合 Drafts 4 使用的工作流就也需要更改。
举例来说,很多人会把 Drafts 和 Workflow 放在一起使用,例如我曾经分享过一个把网页正文转为 Markdown 格式并保存在 Drafts 中的动作(灵感来源于@赵赛坡老师)。像这样的动作必然会牵扯到一个「保存至 Drafts」的步骤,但是 Workflow 尚未支持 Drafts 5。
这个问题的解决方案仍是 URL Schemes。Drafts 5 的 URL Schemes 规则是这样的:drafts5://x-callback-url/动作名?动作参数
,假如我们要用 URL Schemes 创建一条草稿,那我们就应该这么写:drafts5://x-callback-url/create?text=Hello%20World
。其中 create
是一个动作,?
是一个分隔符,而 text= Hello%20World
则是 create
这个动作的参数。
下面我们用这个思路来修改一下以前的 Workflow,这里就以保存网页到 Drafts 的这个 Workflow 动作为例。
如图,删除原先「Add to Draft」这个步骤,新增一个 URL 步骤,填入 Drafts 5 的 URL Schemes,并在 text=
后面用魔法变量插入前面获取到的文字。然后我们在 URL 步骤后面插入一个 Open X-Callback URL 步骤,修改就完成了。对于其它的 Workflow 动作和自动化脚本,修改原理都是相同的。不过你还需要注意一件事情:在这个 Workflow 中的文字已经被自动编码过了,如果你使用的是其它工具,在打开一段 URL Scheme 之前记得将它编码(encode),否则在处理中文内容时会出错。
你可以在 http://getdrafts.com/urls/阅读关于 Drafts 5 的 URL Schemes 的详细信息。
另外,你可以 点击此处获取这个 Workflow 动作。使用时在浏览器中打开分享菜单,运行此 Workflow 即可。
至此,你的 Drafts 5 应该已经能够完全代替 Drafts 4 原先的位置并融入你的工作流了。如果你遇到任何本文未提到的问题,欢迎在评论区提出,我会尽力解答。
>下载 少数派 iOS 客户端、关注 少数派公众号,了解更多有趣的应用 📱