【123】21周 这 4 套自动化流程,让我的工地生活更高效 | 我的自动化

kx8020
01月16日

这 4 套自动化流程,让我的工地生活更高效 | 我的自动化

| 本文为付费栏目文章,您已订阅,可阅读全文 |

栏目介绍

「我的自动化」是 Power+ 的一个新栏目,每期会邀请一位 Power User 来介绍他们的效率工具里都装了啥。
这个栏目接受读者投稿,我们会严格筛选,也可能会联系读者进行修改。投稿邮箱为 service@sspai.com,请将内容和图片打包后作为附件发送。

2017 年夏天毕业后,我来到一个高架桥项目部工作,职务是技术员(施工员)。参加工作这半年,我手头的许多工作都使用了自动化的流程来完成,效率提高了很多。这篇文章相当于是对自己工作半年以来,自动化方面的总结,并不一定具有普适性,但希望能给大家一些启发。

一、利用 Workflow 做施工记录

工地上每天干的活儿,都需要记录到施工日志里,后续需要整理、存档。同事们多数用大脑,或笔记本在工地上进行记录,回到办公室再抄写一遍。我总感觉用脑子记会有遗漏,用笔记本在现场进行记录效率不高,后续整理也不方便。我管理的这一片工作,种类较多,但工作内容都相对比较固定,最终我决定用 Workflow 来进行施工日志的记录。

日志格式
上图是我记录好的一条施工日志。拿图中的「中央分隔带混凝土浇筑」来说,每天浇筑的部位肯定是会变化的,所需的混凝土方量也不同,参与施工的工人人数,大多数时候都是一样的,偶尔可能会有变化。施工所需要的工具(振捣棒)也不会变化,记录时间直接让 Workflow 获取当前时间。因此,只需要把这些会发生变化的部分在 Workflow 中当作变量,依次输入即可。这些变量都是数字,因此 Input Type 选择 Number 在会比较合适,通知中心内也能够直接输入,无需跳转至 Workflow 主程序。

如果想要一次添加多条记录,在 Workflow 开始处加一个 Repeat 就行。最终将一条或多条记录 Append 到 Drafts 的指定条目中即可。

添加到 Drafts
最后的运行效果如下图:

施工记录

二、快速分享联系人信息

工作中经常需要把张三的联系方式告诉王五,或者需要把张三、李四甚至更多人的号码告诉王五,而张三、李四可能有一个或多个号码。直接对通讯录截图后发送过去,是极其不礼貌的行为,而一个个复制姓名、号码又十分麻烦。用 Workflow 配合其他几样工具,就能很方便得解决上面这一痛点。

1. 快速定位联系人

先来看看我的通讯录中单条联系人信息的格式。重点在于 ZJL 这一条目,它是联系人姓名拼音声母的缩写,我将它填写在 Nick Name 昵称 这一条目中。有了这个条目,只需输入几个字母,就能够快速定位到某个联系人。

通讯录样式
注意,为联系人添加这一条目后,通讯录中会默认显示联系人的昵称,有时会带来不便。想要关闭这种显示方式,需要进入系统设置通讯录短名称,关掉首选昵称这一项。

关掉短名称
为几百甚至上千个联系人添加拼音声母缩写,是件极其复杂的事情,好在有一款软件能帮我们批量完成此事。这款软件叫做 Phonetic Contacts,前两年也上过少数派编辑推荐的榜单。不过我没有真正使用过这款 App, 我每一条联系人信息都是自己手动修改的。这款 App 具体如何使用,请看少数派的相关文章。

2. 获取指定联系人电话号码

通过姓名的缩写,已经能做到快速定位指定的联系人,下一步需要做的就是,提取联系人的电话号码等信息,并整合在一起。这一步可以用 Workflow 实现。先来看看我们最终想要实现的成果:

整个流程如下:先将所需联系人的姓名拼音通过 Launch Center Pro 输入到剪切板,比如 ZJL(周杰伦),再运行 Workflow 获取对应联系人的电话号码,最终将姓名、号码整合到一起,复制到剪切板上。
Launch Center Pro 相关的两个简单动作,在我之前介绍 Launch Center Pro 用法的文章中已经提到过,在此就不再多说,直接看 Workflow 的部分。
要同时提取多个联系人的信息,只需把每条关键字分割开,逐一进行处理。把 Nick Name 设置为过滤条件,就能快速定位到指定联系人。当然也可能出现 Nick Name 相同到情况,比如 周杰伦赵江路 的缩写都是 ZJL, 此时只需要加一个判断条件,弹出列表进行供手动选择。

定位筛选联系人
获取到联系人信息后,再逐一进行处理,把其中的姓名、电话号码抽取出来,整合成固定的格式,最后复制到剪切板,粘贴到任意通讯软件中即可。

提取姓名号码
Workflow 下载:获取联系人信息

三、使用 VBA 批量处理 Excel 文档

在施工过程中,对于做完的分项工程,我们需要用(Windows 操作系统下的) Excel 制作评定表进行评定。而同一个分项工程中,评定的内容都是相同的,仅仅是部位不同,如下图:

评定表
注意看上面截图中的 Sheet 1, 这里面存放着供 VBA 调用的一些临时数据,后面会讲到。
再注意看工程部位,本例中需要从 PM97 一直排到 PM 135。也就是说需要有 39 个工作表,工作表中「工程部位」后面单元格中的数字需要依次增大,同时,每个「工作表的名称」需要以工程部位后面单元格中的数字一致。工作表中其他单元格中的内容则不变。
复制工作表很容易,Ctrl 加鼠标拖动就能完成。但一个个去更改工作表名称,以及单元格中的内容,单纯使用人力来完成,是非常费事的。如果用 VBA 来进行批处理,就极其简单了,一秒钟就能完成全部操作。

1. 准备工作

在正式使用 VBA 进行批处理之前,第一步要做的,就是在 Sheet 1 中输入供 VBA 调用的临时数据。本例中是需要用自动输入工程部位,那就先把所有的工程部位列出来,如下图:

临时数据
第一列是 PM, 在我们这个工程项目中代表着主线高架桥,其他情况下,可能变成 PJDS, PJDX 等不同的代号;第二列则是墩号,从 97 开始一直到 135; 第三列则是用符号 & 把前面的两列组合起来,形成 PM97 这样的数据。
第二步要做的则是,复制出多个工作表,后续 VBA 程序就会在这些预先准备好的工作表的指定单元格内,输入指定的数据。本例中需要用到 39 个工作表,使用 Ctrl 加鼠标拖动就能完成复制的操作。

2. 使用 VBA 进行批处理

先放上这次需要用到的 VBA 代码:
Sub 替换单元格并重命名
Dim i&
For i = 2 To Sheets.Count
Sheets(i).Cells(3, "c") = Sheets(1).Cells(i, 1)
Sheets(i).Cells(3, "d") = Sheets(1).Cells(i, 2)
Sheets(i).Name = Sheets(1).Cells(i, 3)
Next
Sheets(1).Select
End Sub
下面解释 VBA 代码的意思。
For i = 2 To Sheets.Count 指的是从数字 2 开始执行循环,一直到「工作表总数」为止。本例中算上存放临时数据的 Sheet 1, 一共有 40 个工作表。
Sheets(i).Cells(3, "c") = Sheets(1).Cells(i, 1) 指的是,从存放临时数据的 Sheet 1 的第 1 列,第 i 行,取出数值,放到 Sheet i 的 C3 单元格中。当 i 等于 2 时,就是把 Sheet 1 工作表第 1 列,第 2 行的 PM, 放到 Sheet 2 中的 C3 单元格内。

C3
Sheets(i).Cells(3, "d") = Sheets(1).Cells(i, 2) 指的是,从存放临时数据的 Sheet 1 的第 2 列,第 i 行,取出数值,放到 Sheet i 的 D3 单元格中。当 i 等于 2 时,就是把 Sheet 1 工作表第 2 列,第 2 行的 100, 放到 Sheet 2 中的 D3 单元格内。

D3
Sheets(i).Name = Sheets(1).Cells(i, 3) 指的是,从存放临时数据的 Sheet 1 的第 3 列,第 i 行,取出数值,把 Sheet i 的名字命名为此数值。当 i 等于 2 时,就是把 Sheet 1 工作表第 3 列,第 2 行的数值 PM97 取出来,把 Sheet 2 命名为 PM97;。

Next 表示执行下一个循环。
Sheets(1).Select 表示执行完上面所有循环后,选中第一个工作表,也就是存放临时数据的那个表,便于稍后删除此表。
具体实现的效果如何,下载下面这个 Excel 文档,运行一下就知道了。
Excel 模版下载:VBA 批处理

四、使用 ffmpeg 配合批处理批量转换视频

同事发了一些教学视频给我,而这些视频都采用 wmv9 编码并使用 avi 进行封装,因此无法在 iOS 或者 macOS 设备上进行硬解码。其结果就是,播放时快进快退不够流畅,CPU 占用率高,耗电量大。我决定将这些教学视频转换为 iOS 和 macOS 可以硬解码的格式。
市面上的视频转换软件百花齐放,我最终决定(在办公室的 Windows 电脑上)使用 ffmpeg 来完成这项工作。因为大多数视频转换软件就是 ffmpeg 套了个 GUI 的壳子,而 ffmpeg 使用命令行来进行操作的方式,让我有种很靠谱、一切尽在掌握的感觉。如何下载安装 ffmpeg 可以去他家官网看看,这里就不再赘述。

1. 分析命令

我想许多非 IT 行业的朋友看到命令行就会产生抗拒心理,但将每条命令分析清楚后,一切就了然了。本例中使用到的 ffmpeg 命令其实是非常简单的:
ffmpeg -i G:\学习视频1.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k G:\学习视频1.mp4
ffmpeg -i 指的是调用 ffmpeg 并自定义参数。
G:\学习视频1.avi 表示原始视频的文件路径。
-c:v libx264 表示使用 libx264 对视频进行编码,它所生成的 H.264/MPEG–4 AVC 编码格式,能够被市面上主流的智能手机及电脑硬解码。
-crf 23 crf 指的是 Constant Rate Factor, 后面的数字 23 表示最终输出视频的质量。这个数字的范围是 0–51, 默认值是 23。51 表示最终视频质量最差,文件体积小;0 表示最终视频质量最好,文件体积最大,转码所需要的时间更多。经过我的多次尝试,用默认值输出的视频质量和体积都是比较均衡的。使用这个参数的缺陷在于,无法指定最终输出视频的码率,以及文件尺寸。
-c:a aac 表示使用 aac 对音频进行编码。
-b:a 128k 表示音频码率设置为 128kb/s。128k 这个数值可以根据原始视频的音频码率来进行一些调整。
G:\学习视频1.mp4 表示最终视频的输出目录和封装格式。
这么分析一下,这条命令的含义应该能够理解了。

2. 批量转换视频

上面那条命令可以直接运行,但教学视频有很多个,逐一把学习视频1中的 1 改成 2, 3, 4 也很费事的,我决定使用 Workflow 为每一个视频生成一个专门的 .bat 批处理文件,双击一下就能转换指定的视频。
批处理文件 .bat 的内容如下:
@echo off
cls
ffmpeg -i G:\学习视频1.avi -c:v libx264 -crf 23 -c:a aac -b:a 128k G:\学习视频1.mp4
pause
清屏后执行前面解释过的那条 ffmpeg 命令,视频转码完成后会在 CMD 窗口中显示「单击任意键以继续」。
Workflow 要做的就是把 学习视频1 中的 1 改成 2, 3, 4 并保存为 .bat 文件。
整个 Workflow 也很简单,依次生成从 1 开始的数字,将命令中文件名的序号替换掉,保存为 .bat 文件,最终将所有的 .bat 文件打包为压缩文件,通过 QQ 等通讯软件发送到 Windows 电脑上。

在 Windows 电脑上双击运行批处理,效果如下图:

CMD
CMD 窗口中会实时显示显示转码进度和速度,最终转码完成后,会提示「单击任意键以继续」。
我个人日常生活中用的是 Mac, 因此也将上面的 ffmpeg 命令做成了 LaunchBar 动作。选中原始视频后,⌘ Space 召唤出 LaunchBar 主界面(不是 Instant Sent),输入 ffmpeg 再回车运行即可。由于水平有限,后续没有继续优化,导致这个动作存在的问题是,一次只能选择、转换一个视频。
LaunchBar 动作下载:ffmpeg to mp4

结语

以上这四套自动化流程,为我这半年的工作提升了不少效率。由于水平有限,虽然这些自动化流程都能正常运行,但对于其中一些软件的技术要点可能理解的不到位,请各位指正。最后再推荐一款 Windows 平台批量重命名的软件,Bulk Rename Utility, 可以调整的参数很多,上手很简单,处理大量文件时也帮助了我很多。

上一期
Power+ 第 21 周预告 & 话题讨论
下一期
一个优雅地分享本地文本的方法
 
精选评论(1) 我的评论
  • iviioiori
    终于看到关于Excel VBA的技巧分享了,虽然简单。
    Power User不应该给自己设限,将自己的工作流局限在IOS或者MacOS 里,又或者只局限在写作、阅读、信息处理类的工作流,希望将来有更多其他领域的文章,例如数据分析、统计。只要是通过一种技巧或者思维提高了一类工作的效率,就很值得分享了,从这个角度Excel VBA就是非常好的工具。
    绝大部分办公人士都没能真正理解office的价值,否则wps不可能大行其道。正因如此,这一类的文章就更值得分享。
    一个社会人的竞争力显然不只是阅读、写作、信息处理,希望更多针对社会人或者说专业人士的文章。
    01月19日 6