Сценарий Office, Удалить имя диапазона игнорируется, ошибок нет - PullRequest
2 голосов
/ 24 февраля 2020

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

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

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

Ответы [ 2 ]

3 голосов
/ 24 февраля 2020

delete - это метод. В JavaScript метод требует открытия и закрытия скобок, даже если параметры не передаются:

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

Мои тесты подтверждают это. Кроме того, код должен включать await.context.sync();

. Важно понимать, что JavaScript поддерживает присвоение метода переменной (объекту), аналогично назначению функции в Excel Name, исключая скобки. Этот объект затем может быть использован в какой-то момент для выполнения метода. Вот почему ошибки не выводятся, когда скобки опущены.

Пример:

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

(Спасибо Лумпенштейну за эту информацию о JS, любезно предоставленной в комментарии.)

3 голосов
/ 24 февраля 2020

Я думаю, что он пропустил скобку:

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

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

...