2017-10-12 3 views
1

Comment puis-je renvoyer une valeur à partir de cette fonction. Je dois écrire un rappel comme un travail autour. J'aimerais pouvoir écrire des fonctions utilitaires comme ci-dessous qui utiliseront Excel.run() et retourneront la valeur nécessaire en tant que sortie de fonction.Comment renvoyer une valeur d'une fonction avec 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() { 

     }); 
}; 

Répondre

2

Bonne question! Plusieurs solutions possibles

Une solution consiste à utiliser des caractères dactylographiés et async/await, et être capable de contourner complètement le problème.

Un autre est défini une variable de liaison dans votre appel context.sync(), ou faire un return dans un .then - et la valeur sera passée à travers. Il va également couler dans l'appelant de Excel.run, de sorte que vous pouvez faire un await ou un .then(function(result) { ... }) et avoir accès à cette valeur. Pour ce dernier, voir la capture d'écran suivante du livre "Building Office Add-ins using Office.js" (divulgation complète, je suis l'auteur dudit livre, mais je pense que vous en apprendrez beaucoup, et je n'en tire aucun bénéfice personnel comme je donne 100% de ses bénéfices à la charité). La capture d'écran montre les valeurs de passage entre .then -s, mais c'est le même concept pour simplement retourner la valeur sur le Excel.run.

Value pass-through

En termes d'utilisation tapuscrit et async/await, il y a un tas de conseils à ce sujet dans le livre aussi bien (la partie JS est en fait en annexe, que le livre reflète mon point de vue personnel que commençant par tapuscrit 2.0 et async/await en particulier, la meilleure façon de découvrir et d'utiliser nos API Office.js est via TypeScript).