如何使用Excel.run()从函数返回值?

时间:2017-10-12 18:14:29

标签: excel office-js

如何从此函数返回值。我不得不写回调作为一种解决方法。我希望能够编写下面的实用程序函数,它将使用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() {

        }); 
};

1 个答案:

答案 0 :(得分:2)

好问题!几种可能的解决方案。

一种解决方案是使用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返回值的概念相同。

Value pass-through

在使用TypeScript和async/await方面,书中也有一堆指导(JS部分实际上在附录中,因为这本书反映了我个人观点,从TypeScript 2.0开始,特别是async/await,通过TypeScript体验和使用我们的Office.js API 的最佳方式