忙碌了一天,各种开不完的会啊、没啥大不了的事儿。回家后收拾停当,第一天开学的娃儿,完好无损地回来了,现在也在母后监督下开始写作业,我可以玩玩我喜欢的代码了。.
今天玩一玩Excel中的脚本,纪念一下我逝去的青春。我学习编程的启蒙阶段就是在Excel中玩脚本,解决了很多办公自动化的问题,甚至也为我挣得了第一笔外汇。
当然,今时不同往日,Excel的脚本可以用Javascript(严格意义上是,Typescript)来编写。今天写了一个小栗子:从网络中读取一个订单列表,并且插入到工作表指定位置。
Excel Online 包含了一个“Automate(自动化)”的功能,它允许我们录制脚本,修改并执行脚本。这个有点像很多年前的VBA,只不过它录下来的脚本是Javascript语言的。当然,熟悉了之后,你就可以自己编写。
下面这段代码,会从网络上下载一份订单数据,并且插入到表格中。
async function main(workbook: ExcelScript.Workbook) {
const sh = workbook.getActiveWorksheet();
sh.getUsedRange().clear();
sh.getRange("A1:D1").setValues([["OrderID","CustomerID","EmployeeID","OrderDate"]]);
sh.getRange("A1:D1").getFormat().getFont().setBold(true);
const response = await fetch('https://services.odata.org/V4/Northwind/Northwind.svc/Orders');
const data: (string | number | boolean )[][] = await response.json().then(x=>x.value)
.then(x=>x.map(y=>[y.OrderID,y.CustomerID,y.EmployeeID,y.OrderDate]))
sh.getRange("A2").getResizedRange(data.length-1,data[0].length-1).setValues(data);
const format = sh.getUsedRange().getFormat();
format.autofitColumns();
format.setHorizontalAlignment(ExcelScript.HorizontalAlignment.left);
}
运行效果如下
后续会偶尔写点这方面的文章,每次一个小例子,如果你对全新的Office 应用中的脚本自动化感兴趣,可以关注。