疫情期间,居家办公时使用了流行的语雀作为团队分享和协作的主要平台,积累了大量文档,复工后这些需要传到公司一份,但是公司采用的是Confluence,本来以为会很简单,查了一下,Confluence居然只支持Word导入,一下子崩溃了。虽然可以让大家自己复制粘贴,但是作为IT人,怎么能容忍纯粹的手工劳动呢,于是有了下面的折腾。
第一轮
经过大量查阅,发现语雀可以批量导出pdf和lakebook两种格式,lakebook是私有格式,没法用,pdf如果能转成word,那问题可能就解决了。
圈圈转了好久好久,结果给我个这:
image.png
尝试多次,依然如故。此路不通!
第二轮
语雀可以单文档导出word、markdown、pdf、lake或者jpg,后三个不可编辑,直接忽略;如果能导出word,往confluence里导入可能就会简单点,但是手动一个一个导出,还不如直接手工复制粘贴呢;有没有工具能支持批量导出呢?经过搜索,发现没有能批量导出word的,但是有能批量导出markdown的一个开源小工具ExportMD。
python ExportMD.py
# 输入空间名,例如: https://www.yuque.com/aaa,其中aaa就是空间名
# 输入token,获取方式:https://www.yuque.com/settings/tokens,没有的话就新建一个
那能不能把代码简单改改,变成导出word呢?
虽然代码量很少,但是读过之后发现,还是有点难。。。
这条路先放放,看还有没有更简单一点的办法。
第三轮
既然ExportMD能够批量导出markdown,那能不能曲线救国,把导出的markdown再转成word呢?果然,又找到了一个神器pandoc,这玩意能通过命令行把markdown转成word,而且效率极高。
papandoc [markdown文件名] -o [word文件名]
那么再写个脚本遍历所有markdown文件,逐个调用pandoc不就都可以转成word了吗?
可是还有个问题,导出的word也是零散的,如果逐个往confluence里面导,一样效率很低。
第四轮
经过测试,confluence导入时可以通过word的标题级别来规整目录结果,那么如果把所有这些零散的word文档合并到一个word文件里,并且用标题级别来区分语雀中的目录级别,那不是就完美了?
怎么能方便地进行word合并呢,而且要尽可能保留word中原本的格式?网上查到比较多的都是用“插入文件中的文字”来合并,但是那样格式就丢了,不太好。另外公司的office文件都被加密了,用其它工具来合并也存在一定的风险,还是VBA最保险。
Sub MergeDocs()
Application.ScreenUpdating = False
MyPath = ActiveDocument.Path
MyName = Dir(MyPath & "\" & "*.doc")
i = 0
Do While MyName <> ""
If MyName <> ActiveDocument.Name Then
Set wb = Documents.Open(MyPath & "\" & MyName)
Selection.WholeStory
Selection.Copy
Windows(1).Activate
Selection.EndKey Unit:=wdLine
Selection.TypeParagraph
Selection.Paste
i = i + 1
wb.Close False
End If
MyName = Dir
Loop
Application.ScreenUpdating = True
End Sub
第五轮
看起来大部分问题应该都解决了,但是还有个小问题,从语雀导出来的markdown已经没有了目录层级的信息,能否自动获取目录层级信息呢?这个得研究语雀的KPI了,如果没有提供的话,那似乎就没啥办法,只能靠人了。。。好在这部分工作量应该不大吧。。。
遗留的改进点:因为用了多个工具,所以显得比较散乱,如果能统一管理起来,做到一键式或者最少步数操作就更好了,这个留待有空有需求了再研究。
很能理解语雀为什么不提供这样的功能,只是确实是有这个需求;如果语雀把这个功能开发出来,哪怕要花钱我觉得也是可以接受的,直接不提供确实不太方便。
感谢本文中用到的或开源或免费的工具!没有这些工具,我再折腾也是白搭!感谢感谢~
网友评论