在Office插件中启用扩展错误日志记录(以查看完整的错误对象语句)

7

我正在开发一个插件,但是遇到了错误。

控制台输出了很多信息,其中包括:

这是什么意思?我如何启用此设置?

1个回答

12

非常好的问题!

想象一下,您有以下代码:

async function run() {
  await Excel.run(async (context) => {
    const range = context.workbook.getSelectedRange();
    range.getRow(1000).format.fill.color = "yellow";
    await context.sync();
  });
}

假设您的选择只是一个小范围,比如getRow(1000)将导致异常。

如果您今天运行它,您会得到一些信息:

Error screenshot

请注意,您并没有获得完整的语句集,只有“周围”的语句(如果您有一堆代码,这可能不够)。而且,一些信息已经被“...”挖空了。

现在,在您的代码上方插入以下行:

OfficeExtension.config.extendedErrorLogging = true;

一旦你拥有了这个,你将得到完整的错误日志记录(这对于调试非常有用,但请不要在生产应用程序中这样做--你不想付出性能成本,更重要的是,你不想记录和存储敏感数据,这些数据可能存在于完整语句的日志中(例如,包含客户信息的2D值数组...)

启用“OfficeExtension.config.extendedErrorLogging”后的完整语句

来源:DefinitelyTyped上的Office d.ts文件

/** Configuration */
var config: {
  /**
   * Determines whether to log additional error information upon failure.
   *
   * When this property is set to true, the error object will include a "debugInfo.fullStatements" property that lists all statements in the batch request, including all statements that precede and follow the point of failure.
   *
   * Setting this property to true will negatively impact performance and will log all statements in the batch request, including any statements that may contain potentially-sensitive data.
   * It is recommended that you only set this property to true during debugging and that you never log the value of error.debugInfo.fullStatements to an external database or analytics service.
   */
   extendedErrorLogging: boolean;
};

谢谢!我成功地通过注释掉与office-js相关的代码行并观察问题是否仍然存在来解决了这个问题,最终找到了几行真正有用的代码,并发现了问题所在。原来表格名称中不能包含某些字符。 - avi12
事实证明,问题并不一定是特定的字符本身,而是字符的总量。 - avi12
很高兴能帮上忙!是的,我相信两者都是正确的——如果您在用户界面中尝试它,您会发现Excel既不允许某些字符,也有长度限制(31或32个字符,如果我没记错的话)。 - Michael Zlatkovsky - Microsoft
在我的Word插件中,当我这样做时,我会得到一个错误:未定义OfficeExtension。 - Nathan B
@NathanB,只要您在“Office.onReady()”触发之后的某个时间进行此调用,它应该是有效的。 - Michael Zlatkovsky - Microsoft
话虽如此,我已经离开了Office可扩展性团队一段时间。如果您遇到问题,我建议您发布一个新的问题,以便当前Office可扩展性团队的成员能够看到并回答。 - Michael Zlatkovsky - Microsoft

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接