Офисный скрипт, удаление имени диапазона игнорируется, ошибок нет
Я только что создал этот крошечный скрипт 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, любезно предоставленную в комментарии.)