Alfred中的工作流确实是令人难以置信的生产力工具。 它们使您基本上可以构建可以想到并可以通过多种方式触发的任何自动化。 在这篇文章中,我将向您展示如何在Alfred工作流程中使用脚本过滤器。
结束游戏
以下是一个快速视频,向您展示了实际的工作流程。 启动Alfred栏后,我键入“ wfx”以触发工作流,这是WorkflowMax的缩写。 WorkflowMax是我们在3DN中用于作业和账单管理的系统。 除了具有RESTful API并返回XML文档(您可以解析以获取有关客户以及这些客户的工作的信息)外,这并不是很重要。
有关工作流程的几点注意事项:
- 它由“ wfx”一词触发
- 输入触发器后,期望输入客户名称,在此示例中,我输入了“ 3dn”
- 键入时,将启动脚本以与工作流程max API进行对话以进行客户搜索,并显示匹配的客户名称
- 在使用箭头键选择了一个客户(在此示例中,列表中仅一个)并按下Enter之后,它会引发对API的另一个调用,以查找该客户的所有项目
- 从列表中选择项目后,它将打开浏览器窗口并导航到所选项目
设置工作流程
这是在Alfred中配置并完成的工作流程。

您会注意到工作流程中实际上有三个触发点:
- 如上视频所示,键入“ wfx”时将触发的主要触发器
- 触发更新工作流的API密钥
- 触发更新工作流最大访问权限的触发器
这两个工作流程中的后者专门设计用于更新使用工作流程max API所需的凭据。 凭证由两个不同的值组成,即API密钥和访问密钥,两者均存储在plist文件中。 这只是意味着凭据不会硬编码到主脚本中,而是根据需要从plist文件中获取。
脚本过滤器
我决定使用ruby进行此集成,主要是因为它不是我所熟悉并不想学习的东西,并且似乎有数百种资源和模块可供使用和学习。
首先,您需要安装一些gem才能使用此工作流程:
- plist —使读取和写入plist文件中的信息变得容易,以保存凭据并在以后取出它们
- alfred-3_workflow-此模块使您可以轻松地从一个数据源获取列表并对其进行格式化,以便Alfred可以将其显示为工作流程列表
- rest-client —用于调用RESTful api和管理响应的库
- nokogiri —这是一个很棒的xml库,它使您可以快速解析xml文档或遍历xml文档中的节点列表。
workflowmax API返回xml而不是JSON格式的数据,因此需要xml库。 安装这些模块非常容易。 打开一个终端窗口并执行以下命令,一些命令仅需几秒钟,而其他命令将安装一系列依赖项。
sudo gem安装plist
sudo gem install alfred-3_workflow
sudo gem install rest-client
sudo gem install nokogiri
[learn_more caption =“使用gem的附带说明”]我刚刚发现gem包管理器内置了一个非常有用的工具。 如果在终端窗口中键入“ gem服务器”,它将启动本地系统上的Web服务器,使您可以查看所有已安装的软件包,并获得源和文档的链接以及说明。 您可以打开浏览器并导航到http:// localhost:8808以查看结果。[/ learn_more]
脚本过滤器包含以下关键组件:
剧本
查询=“ {query}”
需要“ plist”
需要'alfred-3_workflow'
需要“其他客户”
需要“ nokogiri”
file_name =“ keys.plist”
键= Plist :: parse_xml(文件名)
apikey = keys [“ apikey”]
accountkey = keys [“ accountkey”]
工作流程= Alfred3 :: Workflow.new
响应= RestClient.get'https://api.workflowmax.com/client.api/search?apiKey='+ apikey +'&accountKey ='+ accountkey +'&query ='+查询
doc = Nokogiri :: XML(响应)
客户= doc.xpath(“ / Response / Clients / Client”)
customer.each做| x |
id = x.xpath(“ ID”)。text
名称= x.xpath(“名称”).text
工作流程结果
.uid(id)
.title(名称)
.type('默认')
.arg(id)
.valid(true)
结束
打印工作流
这里发生的事情的细分:
- 第1行将变量查询设置为在Alfred栏上传入的客户名称的值。 我们稍后将在脚本中使用此变量来搜索API。
- 第3至6行导入了所需的程序包,这些程序包将在脚本的后面使用。
- 第8行将plist文件的名称设置为变量file_name。
- 第10行通过调用传入file_name的parse_xml创建器来实例化Plist库的实例。 然后,它将plist文件中的值存储到称为键的哈希表中
- 第12和13行将哈希表中的变量apikey和accountkey设置为适当的值。
- 第15行实例化Alfred3工作流程对象的实例
- 第17行实际上是对Web服务的调用,除了添加在Alfred栏中键入的查询之外,还替换了apikey和accountkey。
- 第19行使用从对Web服务的调用返回的值实例化nokogiri xml对象的实例,在这种情况下,该值是xml文档。
- 第21行从xml文档创建一个数组,其中包含在xpath地址“ / Response / Clients / Client”处找到的所有节点
- 第23至33行通过服务返回的每个客户端
- 第24和25行将客户端的ID和名称存储到变量中
- 第27行到第32行将一个项目添加到要在Alfred栏上显示的输出中
- 第35行借助Alfred3-workflow库将循环中收集的项目输出为Alfred期望的JSON格式
放在一起
在Alfred中正常创建一个新的工作流,右键单击工作区并添加脚本过滤器输入。 然后,您可以将以上内容复制/粘贴到脚本窗口中。 确保从语言列表中选择Ruby。
您可以在此处下载导出的软件包。
