Ler e gravar dados na seleção ativa em um documento ou em uma planilha
O objeto Document expõe métodos que permitem ler e gravar a seleção atual do usuário em um documento ou uma planilha. Para fazer isso, o Document
objeto fornece os getSelectedDataAsync
métodos e setSelectedDataAsync
. Este tópico também descreve como ler, gravar e criar manipuladores de eventos para detectar alterações na seleção do usuário.
O getSelectedDataAsync
método funciona apenas na seleção atual do usuário. Se você precisar persistir a seleção no documento de forma que a mesma seleção esteja disponível para ler e gravar entre sessões de execução do suplemento, adicione uma associação usando o métodoBindings.addFromSelectionAsync (ou crie uma associação com um dos outros métodos "addFrom" do objeto Bindings). Para saber mais sobre como criar uma associação a uma região de um documento e a leitura e a gravação em uma associação, confira Associar a regiões em um documento ou uma planilha.
Ler dados selecionados
O exemplo a seguir mostra como obter dados de uma seleção em um documento usando o método getSelectedDataAsync.
Office.context.document.getSelectedDataAsync(Office.CoercionType.Text, function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed) {
write('Action failed. Error: ' + asyncResult.error.message);
}
else {
write('Selected data: ' + asyncResult.value);
}
});
// Function that writes to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
Neste exemplo, o primeiro parâmetro, coercionType, é especificado como Office.CoercionType.Text
(você também pode especificar esse parâmetro usando a cadeia de caracteres "text"
literal ). Isso significa que a propriedade value do objeto AsyncResult, que está disponível por meio do parâmetro asyncResult na função de retorno de chamada, retorne uma string que contenha o texto selecionado no documento. A especificação de tipos diferentes de coerção resulta em valores diferentes. Office.CoercionType é uma enumeração dos valores de tipos de coerção disponíveis. Office.CoercionType.Text
avalia a cadeia de caracteres "text".
Dica
Quando devo usar a matriz ou a tabela coercionType para o acesso aos dados? Se você precisar de seus dados tabulares selecionados para crescer dinamicamente quando linhas e colunas forem adicionadas e trabalhar com cabeçalhos de tabela, use o tipo de dados de tabela (especificando o parâmetro coercionType do getSelectedDataAsync
método como "table"
ou Office.CoercionType.Table
). A adição de linhas e colunas na estrutura de dados tem suporte nos dados de tabela e matriz, mas o acréscimo de linhas e colunas só tem suporte para dados de tabela. Se você não estiver planejando adicionar linhas e colunas e seus dados não exigirem funcionalidade de cabeçalho, use o tipo de dados de matriz (especificando o parâmetro coercionType do getSelectedDataAsync
método como "matrix"
ou Office.CoercionType.Matrix
), que fornece um modelo mais simples de interação com os dados.
A função anônima que é passada para o método como o segundo parâmetro, o retorno de chamada, é executada quando a getSelectedDataAsync
operação é concluída. A função é chamada com um único parâmetro, asyncResult, que contém o resultado e o status da chamada. Se a chamada falhar, a propriedade de erro do AsyncResult
objeto fornecerá acesso ao objeto Error . Você pode verificar o valor das propriedades Error.name e Error.message para determinar por quê a operação set falhou. Caso contrário, o texto selecionado no documento é exibido.
A propriedade AsyncResult.status é usada na instrução if para testar se a chamada foi bem-sucedida. Office.AsyncResultStatus é uma enumeração de valores de propriedade disponíveis AsyncResult.status
. Office.AsyncResultStatus.Failed
avalia a cadeia de caracteres "falha" (e, novamente, também pode ser especificada como essa cadeia de caracteres literal).
Gravar dados na seleção
O exemplo a seguir mostra como definir a seleção para mostrar "Hello World!".
Office.context.document.setSelectedDataAsync("Hello World!", function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed) {
write(asyncResult.error.message);
}
});
// Function that writes to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
A passagem de diferentes tipos de objeto para o parâmetro de dados terá resultados diferentes. O resultado depende do que está selecionado atualmente no documento, qual aplicativo cliente do Office está hospedando seu suplemento e se os dados passados podem ser coagidos à seleção atual.
A função anônima passada para o método setSelectedDataAsync como o parâmetro callback é executada quando a chamada assíncrona é concluída. Quando você grava dados na seleção usando o setSelectedDataAsync
método, o parâmetro asyncResult do retorno de chamada fornece acesso apenas ao status da chamada e ao objeto Error se a chamada falhar.
Detectar alterações na seleção
O exemplo a seguir mostra como detectar alterações na seleção usando o método Document.addHandlerAsync para adicionar um manipulador de eventos ao evento SelectionChanged no documento.
Office.context.document.addHandlerAsync("documentSelectionChanged", myHandler, function(result){}
);
// Event handler function.
function myHandler(eventArgs){
write('Document Selection Changed');
}
// Function that writes to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
O primeiro parâmetro, eventType, especifica o nome do evento ao qual assinar. Passar a cadeia de caracteres "documentSelectionChanged"
para esse parâmetro é equivalente a passar o Office.EventType.DocumentSelectionChanged
tipo de evento da enumeração Office.EventType .
A myHandler()
função que é passada para o método como o segundo parâmetro, manipulador, é um manipulador de eventos executado quando a seleção é alterada no documento. A função é chamada com um único parâmetro, eventArgs, que conterá uma referência a um objeto DocumentSelectionChangedEventArgs quando a operação assíncrona for concluída. Você pode usar a propriedade DocumentSelectionChangedEventArgs.document para acessar o documento que gerou o evento.
Observação
Você pode adicionar vários manipuladores de eventos para um determinado evento chamando o addHandlerAsync
método novamente e passando uma função de manipulador de eventos adicional para o parâmetro do manipulador . This will work correctly as long as the name of each event handler function is unique.
Parar de detectar alterações na seleção
O exemplo a seguir mostra como deixar de ouvir o evento Document.SelectionChanged chamando o método document.removeHandlerAsync.
Office.context.document.removeHandlerAsync("documentSelectionChanged", {handler:myHandler}, function(result){});
O myHandler
nome da função que é passado como o segundo parâmetro, manipulador, especifica o manipulador de eventos que será removido do SelectionChanged
evento.
Importante
Se o parâmetro de manipulador opcional for omitido quando o removeHandlerAsync
método for chamado, todos os manipuladores de eventos do eventType especificado serão removidos.