那些Excel中的脚本:下载数据

忙碌了一天,各种开不完的会啊、没啥大不了的事儿。回家后收拾停当,第一天开学的娃儿,完好无损地回来了,现在也在母后监督下开始写作业,我可以玩玩我喜欢的代码了。.

今天玩一玩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);}

运行效果如下

那些Excel中的脚本:下载数据

后续会偶尔写点这方面的文章,每次一个小例子,如果你对全新的Office 应用中的脚本自动化感兴趣,可以关注。