Javascript 调用Binding.getRange()时出现InvalidArgument错误

Javascript 调用Binding.getRange()时出现InvalidArgument错误,javascript,excel,office-js,Javascript,Excel,Office Js,在对象上调用getRange()方法时,收到以下错误: code: "InvalidArgument", errorLocation: "Binding.getRange", message: "The argument is invalid or missing or has an incorrect format." 这似乎毫无意义,因为根据上面链接的API,该方法没有任何参数 即使是带有文档的示例代码的新项目,getRange()也会给我造成这个错误(当然,在我添加了绑定之后): 这里是

在对象上调用
getRange()
方法时,收到以下错误:

code: "InvalidArgument",
errorLocation: "Binding.getRange",
message: "The argument is invalid or missing or has an incorrect format."
这似乎毫无意义,因为根据上面链接的API,该方法没有任何参数

即使是带有文档的示例代码的新项目,
getRange()
也会给我造成这个错误(当然,在我添加了绑定之后):

这里是否有一些看似无关的问题

我使用的是运行Office Pro Plus 2016的Windows 10,版本1709(Build 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."
但是,我以前使用共享API方法的代码成功地添加了一个绑定,没有任何问题


我将继续进行试验,以确定这是否发生在ExcelApi中所有与绑定相关的方法上,还是发生在任何与绑定无关或共享的API方法上。

您添加绑定的方式错误。 首先,地址应包含工作表名称,因为绑定集合位于工作簿上。所以,它不知道你指的是哪个范围。其次,您应该创建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);
});
...

你知道吗?我不能复制这个(从字面上复制并粘贴你的代码)。您使用的是CDN中的产品库吗?@marclafler与nuget中最新的office.js、CDN和CDN中的beta的结果相同。我也从其他方法中得到了这个错误(参见上面的更新)。很抱歉,我没有发布完整的示例项目,但我似乎找不到任何地方可以上载未被我的组织阻止的源。您是否尝试在中复制此内容?有时,这有助于缩小所发生的事情的范围。@Marclafler我能救一个孩子。新的代码片段,添加了一个绑定和文档示例中的几行。产生错误。这是为你准备的吗?谢谢你的提示。我以前尝试过这些东西,只是没有在我提供的人为的例子中。为什么单个单元格的“范围”?“文本”的作用是什么?如果需要存储未绑定到某个范围的设置值,可以使用文本绑定。它作为一个桥梁提供给具有该选项的旧API。然而,在这种情况下,我会使用文档属性……我所要做的只是将使用原始共享API编写的旧代码(可以获取/设置单个单元格的值)转换为新的Excel API。所有的旧代码都是使用文本绑定工作的,但在新的方式中,我将永远不会使用文本,并且总是使用范围来设置单个单元格的值?虽然我仍然不明白为什么文本绑定不再工作,必须用范围绑定来代替,但切换到范围为我眼前的问题提供了一个可行的解决方案。接受这个答案。我不是说文本绑定不起作用。就我个人而言,我还没有找到使用它的理由。在代码中,我没有看到如何添加文本绑定。如果显示了这一点,我可以检查文本绑定创建或读取API是否存在问题。谢谢
...
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);
});
...