Ошибка InvalidArgument при вызове Binding.getRange () - PullRequest
0 голосов
/ 11 мая 2018

Когда я вызываю метод getRange() для объекта Binding , я получаю следующую ошибку:

code: "InvalidArgument",
errorLocation: "Binding.getRange",
message: "The argument is invalid or missing or has an incorrect format."

Это кажется бессмысленным, потому что метод не имеет никаких параметров в соответствии с API, указанным выше.

Даже новый проект с примером кода документа для getRange() вызывает у меня эту ошибку (конечно, после того, как я добавил привязку):

Excel.run(function (ctx) { 
    var binding = ctx.workbook.bindings.getItemAt(0);
    var range = binding.getRange();
    range.load('cellCount');
    return ctx.sync().then(function() {
        console.log(range.cellCount);
    });
}).catch(function(error) {
        console.log("Error: " + error);
        if (error instanceof OfficeExtension.Error) {
            console.log("Debug info: " + JSON.stringify(error.debugInfo));
        }
});

Есть ли здесь какая-то, казалось бы, не связанная с этим проблема?

Я нахожусь на Windows 10 под управлением Office Pro Plus 2016, версия 1709 (сборка 8528.2139), которая поддерживает ExcelApi 1.6.


Обновление

Я также вижу эту ошибку при попытке добавить привязку с привязками .add() или .addFromNamedItem() примерно так:

ctx.workbook.bindings.addFromNamedItem("Name", Office.CoercionType.Text, "Name");

получают:

code: "InvalidArgument",
errorLocation: "BindingCollection.addFromNamedItem",
message: "The argument is invalid or missing or has an incorrect format."

Мой старый код с использованием метода Shared API addFromNamedItemAsync() однако успешно добавляет привязку без проблем.

Я продолжу экспериментировать, пытаясь определить, происходит ли это со всеми методами, связанными с привязкой в ​​ExcelApi, или с любыми методами, не связанными с привязкой или общими API.

1 Ответ

0 голосов
/ 11 мая 2018

Вы добавляете переплет неправильно.Во-первых, адрес должен содержать имя листа, поскольку коллекция привязок находится в рабочей книге.Таким образом, он не знает, на какой диапазон вы ссылаетесь.Во-вторых, вы должны создать привязку типа Range.Наконец, использование getItemAt является ограничением, поскольку позиция может меняться в зависимости от действий по удалению.getItem с ключом - лучший способ получить объект привязки.

...
ctx.workbook.bindings.add("Sheet1!D3", "Range", "Binding2");
await ctx.sync();
var binding = ctx.workbook.bindings.getItem("Binding2");
var range = binding.getRange();
range.load('cellCount');
return ctx.sync().then(function () {
     console.log(range.cellCount);
});
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...