如何从此函数返回值。我不得不写一个回调作为解决方法。我希望能够编写如下实用程序函数,这些函数将使用 Excel.run() 并将所需的值作为函数输出返回。
function currentSheetName() {
//How to return a value from this function. For eg: activeWorksheet.name
Excel.run(function (ctx) {
var activeWorksheet = ctx.workbook.worksheets.getActiveWorksheet();
activeWorksheet.load("name");
return ctx.sync().then(function(){
callback(activeWorksheet.name)
});
}).then(function() {
}).catch(function() {
});
};
最佳答案
好问题!几种可能的解决方案。
一种解决方案是使用 typescript 和 async/await
,并且能够完全回避问题。
另一个是在您的 context.sync()
中设置一个传递变量。调用或调用return
在 .then
-- 并且该值将被传递。它也会流入 Excel.run
的调用者。 ,这样您就可以执行 await
或 .then(function(result) { ... })
并可以访问该值。
对于后者,请参见“Building Office Add-ins using Office.js”一书的以下屏幕截图(完全披露,我是该书的作者,但我确实认为您会从中学到很多东西,而且我没有从中获得任何个人利益,因为我将其利润的 100% 捐赠给慈善机构)。屏幕截图显示 .then
之间的传递值-s,但它只是从 Excel.run
返回值的概念相同.
在使用 TypeScript 和 async/await
方面, 书中也有很多关于它的指导(JS 部分实际上在附录中,因为这本书反射(reflect)了我个人的观点,即从 TypeScript 2.0 和 async/await
开始,尤其是体验和使用我们的Office.js API 是 通过 TypeScript)。
关于excel - 如何使用 Excel.run() 从函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716337/