Офисный скрипт, удаление имени диапазона игнорируется, ошибок нет

Я только что создал этот крошечный скрипт Office:

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

Имя диапазона "Новое имя" существует в текущей книге, код выполняется без ошибок, но имя не удаляется. Зачем? Я ожидал бы получить сообщение об ошибке выполнения, если мне не разрешено удалять имена диапазонов.

2 ответа

Думаю, скобка упустила:

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

Я просто попробовал по этой сути, вы могли бы попробовать. https://gist.github.com/lumine2008/f55a6265a93b421112de210b22e9a48a

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, любезно предоставленную в комментарии.)

Другие вопросы по тегам