Tutorial: Compartilhar dados e eventos entre as funções personalizadas do Excel e do painel de tarefas
Compartilhe dados globais e envie eventos entre o painel de tarefas e funções personalizadas do suplemento do Excel com um runtime compartilhado.
Partilhar um estado entre a função personalizada e o código do painel de tarefas
As instruções a seguir mostram como compartilhar uma variável global entre as funções personalizadas e o código do painel de tarefas. Este tutorial pressupõe que concluiu o tutorial de funções personalizadas do Excel, com uma Função Personalizada do Excel com um projeto de Runtime Partilhado com o tipo de script JavaScript. Utilize o suplemento que criou nesse tutorial para concluir as seguintes instruções.
Criar funções personalizadas para obter ou armazenar o estado compartilhado
No código do Visual Studio, abra o arquivo src/functions/functions.js.
Na linha 1, insira o código a seguir na parte superior. Isso inicializará uma variável global chamada sharedState.
window.sharedState = "empty";
Adicione o código a seguir para criar uma função personalizada que armazena valores para a variável sharedState.
/** * Saves a string value to shared state with the task pane * @customfunction STOREVALUE * @param {string} value String to write to shared state with task pane. * @return {string} A success value */ function storeValue(sharedValue) { window.sharedState = sharedValue; return "value stored"; }
Adicione o código a seguir para criar uma função personalizada que obtém o valor atual da variável sharedState.
/** * Gets a string value from shared state with the task pane * @customfunction GETVALUE * @returns {string} String value of the shared state with task pane. */ function getValue() { return window.sharedState; }
Salve o arquivo.
Criar controles do painel de tarefas para trabalhar com dados globais
Abra o arquivo src/taskpane/taskpane.html.
Após o elemento de fechamento
</main>
, adicione o seguinte HTML. O HTML cria duas caixas de texto e botões usados para obter ou armazenar dados globais.<ol> <li> Enter a value to send to the custom function and select <strong>Store</strong>. </li> <li> Enter <strong>=CONTOSO.GETVALUE()</strong> into a cell to retrieve it. </li> <li> To send data to the task pane, in a cell, enter <strong>=CONTOSO.STOREVALUE("new value")</strong> </li> <li>Select <strong>Get</strong> to display the value in the task pane.</li> </ol> <p>Store new value to shared state</p> <div> <input type="text" id="storeBox" /> <button onclick="storeSharedValue()">Store</button> </div> <p>Get shared state value</p> <div> <input type="text" id="getBox" /> <button onclick="getSharedValue()">Get</button> </div>
Antes do elemento
</body>
fechamento, adicionar o script a seguir. Esse código manipulará os eventos de clique do botão quando o usuário desejar armazenar ou obter os dados globais.<script> function storeSharedValue() { let sharedValue = document.getElementById('storeBox').value; window.sharedState = sharedValue; } function getSharedValue() { document.getElementById('getBox').value = window.sharedState; } </script>
Salve o arquivo.
Compile o projeto.
npm run build
Experimente compartilhar dados entre as funções personalizadas e o painel de tarefas
Inicie o projeto usando o comando a seguir.
npm run start
Após a inicialização do Excel, você pode usar os botões do painel de tarefas para armazenar ou obter os dados compartilhados. Insira =CONTOSO.GETVALUE()
em uma célula para que a função personalizada recupere os mesmos dados compartilhados. Ou use =CONTOSO.STOREVALUE("new value")
para alterar os dados compartilhados para um novo valor.
Observação
É possível chamar algumas APIs do Office a partir de funções personalizadas através de um runtime partilhado. Consulte chamada de APIs do Microsoft Excel a partir de uma função personalizada para mais detalhes.
Quando estiver pronto para parar o servidor dev e desinstalar o suplemento, execute o seguinte comando.
npm run stop