# 用 LaunchBar 搜索 Word 的最近文件

> 本文公开全文。

原文：https://utgd.net/article/20572

最近文件（Recents）是 macOS 文件管理的金罗盘，一个人可以不懂如何组织文件夹，甚至把桌面当成沙盘游戏战场，但只要知道去哪儿找最近文件，平时常用的东西就丢不了。

最近文件在整个 macOS 系统中无处不在：长按 Dock 栏上的图标，可以看到该软件最近打开的文件；在任何程序中三指下滑（或者四指），更能全屏查看最近文件；新电脑默认打开的第一个文件夹，还是“最近文件”；启动器 LaunchBar 也能浏览最近文件，免去搜索。我们可能想不起来上次写过的草稿放在哪儿，但常用编辑器没得跑，就是那一两个，只要看看它们的最近文件列表，基本就能把草稿文件揪出来。

然而，Office 三件套却并不支持在软件外查看最近文件，我们只能打开软件，然后在其内置文件浏览器中查看。这已经足够让 LaunchBar 用户不悦，但还没惹到我；直到我发现，Office 竟然在打开主程序后也不能正常查看最近文件，唯一途径就是它内置的浏览窗口，这些人为限制让我大为光火，下决心给它松松筋骨，并且一步到位，非得用 LaunchBar 来查看 Word 的最近文件不可。

而手术结果只是差强人意。在 Office 三件套中，唯独 Word 的最近文件能够调取出来，但会随机出现偏差；Excel 则使用了特殊编码，我暂时无法解析；而 PowerPoint 干脆不提供任何最近文件信息，在本文框架下令人一筹莫展。

本文将使用 LaunchBar、Keyboard Maestro 等自动化工具和 AppleScript、Shell Script 和 Python 等脚本，确实没指望诸君能够复现。这篇文章，只是作为挖掘 Office for macOS 自动化潜力的一块砖头。

配套动作下载

## 获取 Word 最近文件列表

Word 在软件内部可以浏览最近文件，这暗示着它起码存储了最近文件数据，和那些 iOS 移民软件不可等量齐观。或许 Word 将相关数据存于某个特殊文件，但比起去各个论坛刨根问底，主动提取数据似乎更有希望。Word 在 macOS 上开发历史极长，留下了大量 AppleScript 脚本遗产，获取最近文件数据的可能性就闪烁其中。检索 Word 的 AppleScript 词典后，我编写了一段脚本，成功取得最近文件列表。

不过，PowerPoint 和 Excel 那边的情况却不乐观。PowerPoint 的词典中根本没有最近文件（recent file），而 Excel 的数据中则有乱码，按照正常的 URL 解码程序，总是掺入随机字符和一个 %，恕我无法参透。实际上，Word 给的数据也很糟糕，它提供最近文件路径均无后缀名，我还需要另行提取文件的全名，并将后缀截下来，以补齐路径。起码 Word 修修补补还能用，但 Excel 和 PowerPoint 实在扶不上墙。最近文件应当是一个基本元素，Office 三件套应等同视之，很难想象三个软件的态度何以如此不同。

经过在 AppleScript 的代码中的跋山涉水，多少算是拿到了 Word 的最近文件列表。但手动抽取数据并不自然，最好自动记录 Word 的最近文件。最符合直觉的思路是定时运行脚本，但 Word 在我的电脑上终归不是常驻软件，多数时间它都关着，无法直接用 AppleScript 抽取数据；我的做法是搭配 Keyboard Maestro，每次退出 Word 时保存一下。待日后 Shortcuts 的场景自动化搬到 macOS 上，估计也可以用它代替 Keyboard Maestro。

从 Word 中获得的原始数据经过了 URL 编码，所以还需要解码，才能获得日常所见的文件路径……一路的支架搭下来，整个工程已经颇为浩大，完全成了围绕 Word 的临时建筑群——而现在，我们还要处理 LaunchBar 那边的问题。

## 用 LaunchBar 检索 Word 最近文件

获取最近文件之后，就要考虑如何浏览和搜索。Keyboard Maestro 本身有搜索框组件，但它对搜索结果只能执行一个操作，而我有时需要直接打开文件，另一些时候则想在 Finder 中查看原始文件，这已让 Keyboard Maestro 捉襟见肘。既然此前的准备工作已经大动干戈，再往上搭一套 LaunchBar，似乎也没有那么让人反感。

LaunchBar 本职是启动器，擅长搜索——包括中文——以及搜索结果的处理。用 Keyboard Maestro 获取数据时，我顺手就将最近文件列表存储到 LaunchBar 的文件夹中，待后者调用；LaunchBar 将文件名截出来，作为搜索结果标题，文件路径同样完整保留，作为副标题。没有输入任何关键词时，LaunchBar 默认会显示最近打开过的全部 Word 文档；输入关键词后，则会实施更新搜索结果。这个效果比系统原生的最近文件浏览方式更佳，盖其支持搜索，而非只能滚动浏览。

找到目标文件后，默认的处理方式是直接打开，但我并非总是要编辑文档，有时候只想把文件翻出来整理一下，或者发给别人，这时候只需要查看原始文件。LaunchBar 本身可以在 Finder 中显示原始文件（快捷键是 ‌⌘Command\-↩Return），而 Keyboard Maestro 提供给它的正好是完整路径，一拍即合。

## 结语

正如文章开头所说，我对 Word 的不满直接来自其与 LaunchBar 的龃龉。我已经习惯用 LaunchBar 浏览最近文件，甚至很少打开 Finder（把 LaunchBar 换成 Alfred，大概同样成立）；而 Office 却把我拖回了文件夹管理的上古时代。

在 macOS 上，除了 Office，几乎只有那些 iOS 搬过来的特洛伊木马还不能显示最近文件，这一状况随着 AppKit 的推行而有所好转；至于跨平台软件那边，甚至 Obsidian 这种套壳玩意儿都支持了最近文件（严格来说是“最近文件夹”，因为 Obsidian 以数据库为浏览单位），Office 实在是格格不入。对 OS X 时代的老玩家来说，这已经是意识形态的问题；而对新用户而言，这同样是一个通用设计（universal design）的问题：一个操作系统上的软件，应该有某种逻辑连贯性。

我在 Office 和原生软件的对立中看不到逻辑连贯，在 Word、PowerPoint 和 Excel 的 AppleScript 词典中看到的更是自相矛盾，似乎三个软件是三家公司分别生产的。而这些不满，大概就是自动化玩家的原始动力：改造工具，适应自身，而不是相反。

---

[前往标准阅读页](https://utgd.net/article/20572?audience=web)
