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

标签 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() {

        }); 
};

最佳答案

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

一种解决方案是使用 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 部分实际上在附录中,因为这本书反射(reflect)了我个人的观点,即从 TypeScript 2.0 和 async/await 开始,尤其是体验和使用我们的Office.js API 通过 TypeScript)。

关于excel - 如何使用 Excel.run() 从函数返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46716337/

相关文章:

java - 如何使用 apache poi 更改 excel 表的同一单元格中的特定文本颜色?

VBA LastRow 计算不起作用

office365 - Office 365 加载项 - 如何隐藏任务 Pane ?

javascript - 无法从对话框中的 <script> 访问 Javascript API for Office

javascript - promise 运行的保证顺序,Word API JS

office-js - 如何以编程方式添加和获取 customXMLPart

Excel:如何对每 n 列的单元格值求和

excel - 意外错误 : Operation is not valid due to the current state of the object

excel - 1004错误:未找到任何单元格,容易解决吗?

outlook-addin - 使用 JavaScript API for Office 获取邮件正文