如何使用AppleScript引用已命名的Excel列?

想象一下,你有一个名为Customers.xlsx的Excel 2010电子表格(这很容易,如果你的尝试)。

您有一个名为Customers的工作表。

电子表格数据如下所示:

CustomerId Name Email ---------- -------- --------------- 1001 Ken ken@gmail.com 2001 Jennifer jen@gmail.com 3001 Violet violet@gmail.com 

我有一个简单的AppleScript,简单地循环这些数据,并显示每一行的对话框。

 set strExcelFileLocation to "Macintosh HD:Users:lowken:Documets:ExcelTest:Customers.xlsx" set strWorkSheetName to "Customers" set intCnt to 2 set intCustomerIdIndex to 1 set intNameIndex to 2 set intEmailIndex to 3 tell application "Microsoft Excel" activate --open workbook workbook file name strExcelFileLocation activate object worksheet strWorkSheetName set intLastRow to first row index of (get end (last cell of column 1) direction toward the top) tell active sheet to set myData to value of used range repeat set intCustomerId to item {intCustomerIdIndex} of item {intCnt} of myData set strEmail to item {intEmailIndex} of item {intCnt} of myData set strName to item {intNameIndex} of item {intCnt} of myData display dialog "Customer " & intCustomerId & " " & strName & " has an email address of " & strEmail if intCnt = intLastRow then exit repeat end if set intCnt to (intCnt + 1) end repeat end tell 

除了我有一个问题,一切都很好。 我正在使用整数索引值来引用列。 所以我使用3来引用电子邮件列。

当我想将电子邮件移动到第4列时会发生什么? 就目前而言,我的AppleScript将会崩溃。

您可以命名Excel列。 这是通过突出显示列(电子邮件列“C”)并为该列命名来完成的。 在这个例子中,列“C”的名字是“电子邮件”。

卡住的地方是在我的AppleScript中使用列名。

我试图做出以下更改,但没有奏效

 set strEmail to item {"Email"} of item {intCnt} of myData 

是否有可能通过列名检索列索引?

像这样的东西:

 set intEmailIndex to IndexOfExcelColumn("Email") 

任何人都可以告诉我如何使用Excel中的列名称。 我的最终目标是能够在电子表格中间添加一个新列,而不会破坏我的AppleScript。

谢谢

我build议按照我的评论,最简单的解决scheme是在脚本的开始处,遍历列并捕获每个标题的索引,然后可以继续在脚本的其余部分使用这些索引。