2017-10-12 8 views
1

この関数からどのように値を返すことができますか?私は回避策としてコールバックを書く必要があります。私はExcel.run()を使用し、必要な値を関数出力として返す、以下のようなユーティリティ関数を書くことができるようにしたいと思います。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() { 

     }); 
}; 

答えて

2

良い質問!いくつかの可能な解決策。

解決策の1つは、typescriptとasync/awaitを使用して問題をすべて解決することです。

もう1つは、context.sync()コールでパススルー変数を設定するか、または.thenreturnを設定し、その値が通過します。 awaitまたは.then(function(result) { ... })を呼び出し、その値にアクセスできるように、発信者Excel.runにも流れます。

後者については、書籍「Building Office Add-ins using Office.js」(完全な開示、私はその本の著者ですが、あなたはそれから多くを学ぶと思います。その利益の100%を慈善団体に寄付しています)。スクリーンショットには.then -sの値が渡されますが、Excel.runの値を返すだけの場合と同じです。活字体とasync/awaitを使用しての面では

Value pass-through

本は活字体で始まる私の個人的な視点を反映していると、それに関するガイダンスの束は、(同様に本にありますJS部分は、付録に実際にあります2.0およびasync/awaitの場合、Office.js API を経験して使用する最善の方法は、TypeScriptによるです)。