3

我已经在 Excel 网页版中使用新的 Office 脚本创建了一个脚本。该脚本只是为当前工作表中的某个范围设置填充颜色,获取使用的范围,然后尝试将该范围的地址写入控制台。

async function main(context: Excel.RequestContext) {
  let workbook = context.workbook;
  let worksheets = workbook.worksheets;
  let selectedSheet = worksheets.getActiveWorksheet();
  selectedSheet.getRange("B3:E6").format.fill.color = "E2EFDA";

  // write used range to console
  let usedRange = selectedSheet.getUsedRange();
  usedRange.load("address");
  context.sync();
  console.log("used range = " + usedRange.address);
}

运行此脚本会生成以下错误消息:

The property 'address' is not available. Before reading the property's value, call the load method on the containing object and call "context.sync()" on the associated request context.

似乎我已经按照错误消息指南的建议进行操作——即调用load方法来加载address属性,然后context.sync()在加载后调用。我在这里想念什么?

4

1 回答 1

4

您需要在await之前添加context.sync();(因此它变为await context.sync();)。

context.sync()是一个异步操作,这意味着脚本将在sync完成之前继续运行。由于脚本的下一行需要工作簿中的信息,因此sync需要在继续之前完成。更改行以await context.sync();确保工作簿和脚本之间的同步已完成并成功,然后再继续。

网页版 Excel 中的 Office 脚本脚本基础一文中对此进行了详细介绍。

于 2020-01-08T20:58:25.963 回答