2

我刚刚创建了这个小小的 Office 脚本:

async function main(context: Excel.RequestContext) {
  context.workbook.names.getItem("Newname").delete;
}

当前工作簿中存在范围名称“新名称”,代码运行没有错误,但名称没有被删除。为什么?如果我不允许删除范围名称,我会收到运行时错误。

4

2 回答 2

3

我认为它错过了括号:

  context.workbook.names.getItem("Newname").delete();

我只是按照这个要点试过了,你可以试试。https://gist.github.com/lumine2008/f55a6265a93b421112de210b22e9a48a

于 2020-02-24T11:43:09.050 回答
3

delete是一种方法。在 JavaScript 中,一个方法需要打开和关闭括号,即使没有要传递的参数:

context.workbook.names.getItem("Newname").delete();

我的测试证实了这一点。此外,代码应包括await.context.sync();

重要的是要意识到 JavaScript 支持将方法分配给变量(对象),类似于将函数分配给 Excel Name,通过省略括号。然后可以在某个时候使用该对象来执行该方法。这就是省略括号时不会引发错误的原因。

例子:

const deleteNewName = context.workbook.names.getItem("Newname").delete; 
deleteNewName();

(感谢 Lumpenstein 在评论中提供的有关 JS 的信息。)

于 2020-02-24T11:44:54.413 回答