如何开始自动化我的工作?(这是一个提问标题,无需回答)

14

我新的工作是销售进口货物。为了能够出售这些货物,我们需要对每批入库的货物进行以下处理:

  • 以电子邮件附件Excel电子表格的形式收到发票
  • 接收人员打开发票,将三列中的相关部分复制并粘贴到电子表格模板的相关部分中,其中进行非常复杂的计算,例如=B2*550
  • 接收人员将这个新的电子表格发送给上司(如果幸运的话是通过电子邮件,否则可能通过打印机),上司将设置零售价
  • 接收人员打开回复,然后使用一个无法使用的客户端程序将数据输入到生产数据库中
  • 接收人员启动HyperTerminal,并键入“AT”命令,然后断开连接
  • 接收人员使用可怕的客户端程序中的另一部分逐个地向客户发送短信和邮件

我想把接收人员的角色尽可能地转移到软件中。虽然我以前没有写过任何与电子邮件、Excel、数据库或SMS交互的东西,但如果这样能使我从这些琐事中解脱出来,我会很乐意学习。

以下是我未经专业知识的愿望清单:

  • 软件通过Thunderbird(可能是邮件服务器)请求附件
  • 软件告诉Excel将电子表格转存为更适合Jurily的格式,例如CSV或其他格式
  • 软件解析输出,进行复杂的计算
  • 软件向上司发送一个网页链接,让他可以设置价格
  • 软件连接数据库,插入数据
  • 软件向客户发送信息

这些都可行吗?如果是,我应该从哪里开始学习?你会怎么改进它?你认为哪种编程语言/框架最理想?你会如何处理上司的问题?


3
抽象来说,这完全是可行的。我建议先熟悉Python及其相关模块,因为相比其他语言,在此类任务中每行代码的效率更高。另一方面,你可能会发现在组织上不可行,因为如果他们一直以这种方式做事,自然的反应是“但我们一直都是这样做的”,而这种情况下缺乏可用的调试工具。 - msw
1
当没有事情可做时,可怜的猴子会发生什么? - mikerobi
8
这只猴子将会被晋升为“码农”,或者他会因为掌握了新的技能而辞职并获得一份更好的工作。 - Jay Bazuzi
5个回答

6
有很多工具可以用来解决这个问题,包括Python、Excel宏、VB脚本等。在这种情况下,PowerShell似乎是一个很好的选择,因为它天然地结合了Office的COM访问、.NET和脚本编写,并且非常强大。如果您已经知道一种合适的技术,那么使用您已经掌握的技术完成工作是最快的方法。否则,使用PowerShell。
(C# 4.0也是可以的,不过早期版本与Office的COM接口交互时效果不佳。)
不要试图一次性解决整个问题。从选择一个小而容易的部分开始,这将立即为您带来很多价值。这样做成功的几率更大。(为了让您的老板同意,您需要尽快取得成功。如果您不告诉您的老板,您需要更快地取得成功!)一旦您完成了这个小部分,您可以利用新发现的空闲时间(可能每天只有几分钟)来扩展您的工具和技能到下一个小部分。成功会加速成功。
最终您将用代码代替繁琐的工作,要么升职加薪,要么不满离职找到更好的工作。

1
PowerShell听起来很完美,谢谢。如果我负担得起的话,我早就气愤地辞职了。而且,我有点喜欢这个挑战。 - György Andrasek

2
大部分是Excel和电子邮件。可以使用COM或与OpenOffice.org进行交互来处理Excel。至于电子邮件,有很多种方法可以处理。我选择使用Python,以及pywin32PyUNO,以及poplibsmtplib。老板...永远是老板。关于不好的湿件问题,你并不能总是做很多事情。

1
我使用 xlrd 从 Excel 电子表格中读取不是很复杂的数据,体验非常好。纯 Python,简单 API,一切都很顺利。不过我不知道它是否支持 .xlsx 格式。 - Steve Jessop

2
我会先问自己以下几个问题:
  1. 发票是否必须通过电子邮件发送,还是可以提供一个网页表单供用户输入数据?在Google文档上放置表单非常简单,您可以下载以您为基础设置的常见格式的Excel响应。当然,还有更好的方法。
  2. 老板是否需要创建新的电子表格,或者您可以向他提供一个数据库应用程序,在其中他可以查看您的表单,输入价格,勾选“批准”,并触发将其放入生产数据库的过程?
  3. 客户端程序的接口是否可以绕过?您是否可以让其他应用程序调用客户端程序?
  4. 是否可以由您而不是客户端应用程序向最终用户发送文本?如果可以,请问您能否自动化该部分内容?
以上仅是一些想法。

+1,关于第二点的想法很好。我对发票没有控制权,但老板应该能够操作基于Web的表单。至于第三和第四点,一旦我弄清楚它实际上是做什么的,客户端应用程序将被抛弃。 - György Andrasek

0

解决方案之一是将电子邮件发送到Unix服务器(而不是Exchange),并使用procmail来转储附件(请参见http://gimpel.ath.cx/howto_fetch_proc_metamail.html,了解示例)

至于老板,准备一个漂亮的网页,并向他发送链接。然后给他发送一封简短的电子邮件(不超过3行),告诉他使用该页面可以在一个月内节省30分钟的工作时间,同时你也可以在一个月内节省2小时的工作时间。但要准备好支持这些数字。

然而,从非常高的层面来看,除非你准备在自己的时间内完成整个自动化过程,否则你最好能够向老板证明总体节约时间x6个月少于开发此解决方案所需的时间。因为在他眼中,程序员的薪水可能已经足够低,以至于软件成本根本不值得 - 不幸的是,根据强大的解决方案的复杂程度,他可能是正确的。


实际上,没有必要使用Unix服务器;只需在Exchange服务器上启用IMAP端口即可。 - Andrew McGregor

0
正如我上面所提到的,你最后一个问题可能是最重要的。最好将其视为个人skunkwork项目,在其中向老板展示完成的产品,收集创新奖金,然后被解雇,因为现在比你更愚蠢的猴子可以做你的工作。

1
在任何像样的公司里,他会因为这样做而被晋升,而不是被解雇。当然,他的工作还没有被自动化,这表明该公司不像样。 - Jay Bazuzi

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接