Keyboard Maestro 为助教工作节省时间
做网络希伯来文的助教,主要负责六件事情。1. 发通知;2. 改 Quiz; 3. 改试卷; 4. 回答学生邮件; 5. 处理其他特殊情况,比如学生因病申请延期; 6. 提交最终的成绩。其中前三项都涉及一些在电脑上重复性的机械的操作。这些重复的劳动有点浪费时间。所以,这些机械的劳动最好就是让电脑来自动完成。
这里主要用到的是 Mac 上非常强大的一个自动化软件 Keyboard Maestro (KM)。在处理学生名单的时候,还会用到 Excel 的宏命令。
我需要发的通知包括欢迎邮件以及每次考试的 Study Guide。 Keyboard Maestro 可以设置宏命令,只需要预先设置好收件人的名单,邮件内容,附件内容等,以后便可以一键发送邮件。
收件人的名单我用一个变量 “EHemails”。因为一门课会有好几个通知要发。设变量的好处是只需要改一下变量的内容就好了。变量可以到 KM 的 Preferences 里的 Variables 中去赋值(就是把收件人的邮箱粘贴进去就可以了)。邮箱清单的制作用到 Excel 的宏命令。下面还会分享。
改试卷的话,我通常的作法是把试卷下载到电脑里,在平板电脑上批改。批改完了后再打包上传回去。最后再一次性登记成绩。
一个班级如果达到 40 位学生,就会分成两个 Sections (60 人以上就分成 3 个 Sections)。每个 Section 都会有一位助教来负责。学校的系统有个问题。下载下来的试卷是整个班级的所有学生的试卷,而不仅仅是我负责的那个 Section 而已。我就需要把自己 Section 的那些试卷挑出来,放到另一个文件件中再进行批改。一门课一共有四次考试。所以重复四次这个过程。这个挑的过程,我也想到了用 KM 来完成。
从网上下载下来的试卷中,文件名是以学生的名字开始的,并且是以[姓][名]这样的格式开头的(比如smithadam_1240_354038_Exam2530.pdf)。所以,我的思路是,让 KM 知道我负责的学生名单,然后让它将这名单与我下载下来的文件名进行比较。这份名单也要以[姓][名]这样的格式告诉 KM,它才可以正确比较。名单的制作我也是用 Excel 的宏命令来完成的。
接下来就来讲讲如何制作学生的邮箱清单和学生名单。
邮箱清单的格式要求是:所有邮箱之间用逗号和空格隔开。比如 asmith225@.edu, mluther356@.edu。
学生名单的格式要求是:姓后面紧跟着名(中间没有空格)。不同的姓名之间用逗号隔开。比如 SmithAdam,LutherMartin (大小写没关系)。
1.首先我们需要下载所有的学生名单。下载过来的名单是 csv 格式。可以用 Numbers 或 Excel 打开。里面有很多内容。比如我下载的那个就有 40 列内容。但是我们其实只需要前四列的内容(其实只需要第一列和第四列)。
2.表格第五列是学生所在的 Section。这里标注了那位学生是属于哪个助教的 Section 的。我们先对这列进行筛选。把属于自己 Section 的学生筛选出来 (Numbers 和 Excel 都有这个功能。所以用哪个应用打开无所谓)。筛选功能太简单了,这里就不放截图了。
3.筛选完之后,把属于自己 Section 的学生前四列内容都复制到之前建好的一个 Excel 文档中。这个文档中我已经做好了一个宏命令。复制粘贴也是最简单的,我也不放截图了。
第一列是学生的名字,名字的格式是[名] + 空格 + [姓](比如 Adam Smith)。这个格式不是我们所要的,所以我们要用宏命令把它换成[姓][名](中间不带空格),并且每个姓名之间用逗号隔开。(这里名单要稍微注意一下,有个别学生的名词有中间名。这个中间名一定要先删掉,因为下载下来的试卷名称里是不包含中间名的)
第四列是学生的邮件用户名,但是后面没有带 @.edu。我使用宏命令把 @.edu 补上。然后把它们并在一起,并且中间用 “逗号+空格” 隔开。
4.执行已经建好的宏命令。结果一步生成。然后,把生成的结果复制并粘贴到 KM 中相应的地方(邮件功能和试卷筛选功能分别看前面以及文末截图)。(我的宏命令是假设前面复制了前四列内容。所以一定要复制前四列,不多也不少,否则就要更改宏命令的内容)
以下是 Excel 中的宏命令(如何创建宏请自行 Google。宏命令执行的结果都是学生的信息,所以我也不放截图了):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
Sub StudentsEmailAndNameList() Dim oWS As Worksheet, lLastRow As Long, r As Long, j As Long Set oWS = ActiveSheet lLastRow = oWS.Cells.SpecialCells(xlLastCell).Row j = lLastRow + 1 For r = 1 To lLastRow ' 1. Make Email lists. 2. Copy the names to the "F" column. oWS.Cells(r, 5).Value = oWS.Cells(r, 4).Value & "@***.edu," oWS.Cells(r, 6).Value = oWS.Cells(r, 1).Value Next 'Split the name into two columns, one for FamilyName, the other for FirstName Range(oWS.Cells(1, 6).Address(), oWS.Cells(lLastRow, 6).Address()).Select Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True For r = 1 To lLastRow ' change name format to FamilyName&FirstName, followed by a comma, ready for combining. oWS.Cells(r, 8).Value = oWS.Cells(r, 7).Value & oWS.Cells(r, 6).Value & "," Next For r = 1 To lLastRow ' 1. Combine all emails; 2. combine all names oWS.Cells(j, 5).Value = oWS.Cells(j, 5).Value & oWS.Cells(r, 5).Value & " " oWS.Cells(j, 8).Value = oWS.Cells(j, 8).Value & oWS.Cells(r, 8).Value Next oWS.Cells(j, 5).Font.Color = vbRed oWS.Cells(j, 8).Font.Color = vbRed ' Change the two cells color to "Red". the email list is for sending emails; the names list is for KM to move exam papers. End SubSub StudentsEmailAndNameList() Dim oWS As Worksheet, lLastRow As Long, r As Long, j As Long Set oWS = ActiveSheet lLastRow = oWS.Cells.SpecialCells(xlLastCell).Row j = lLastRow + 1 For r = 1 To lLastRow ' 1. Make Email lists. 2. Copy the names to the "F" column. oWS.Cells(r, 5).Value = oWS.Cells(r, 4).Value & "@***.edu," oWS.Cells(r, 6).Value = oWS.Cells(r, 1).Value Next 'Split the name into two columns, one for FamilyName, the other for FirstName Range(oWS.Cells(1, 6).Address(), oWS.Cells(lLastRow, 6).Address()).Select Selection.TextToColumns Destination:=Range("F1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1)), TrailingMinusNumbers:=True For r = 1 To lLastRow ' change name format to FamilyName&FirstName, followed by a comma, ready for combining. oWS.Cells(r, 8).Value = oWS.Cells(r, 7).Value & oWS.Cells(r, 6).Value & "," Next For r = 1 To lLastRow ' 1. Combine all emails; 2. combine all names oWS.Cells(j, 5).Value = oWS.Cells(j, 5).Value & oWS.Cells(r, 5).Value & " " oWS.Cells(j, 8).Value = oWS.Cells(j, 8).Value & oWS.Cells(r, 8).Value Next oWS.Cells(j, 5).Font.Color = vbRed oWS.Cells(j, 8).Font.Color = vbRed ' Change the two cells color to "Red". the email list is for sending emails; the names list is for KM to move exam papers. End Sub |
以下是 KM 文件转移宏命令设置(执行这个宏命令,KM 就自动将我们自己 Section 的学生的试卷都移到我指定的文件夹中去了):