Obter ou definir o local ao compor um compromisso no Outlook
A API javaScript do Office fornece propriedades e métodos para gerir a localização de um compromisso que o utilizador está a compor. Atualmente, existem duas propriedades que fornecem a localização de um compromisso:
- item.location: API Básica que lhe permite obter e definir a localização.
-
item.enhancedLocation: API avançada que lhe permite obter e definir a localização e inclui especificar o tipo de localização. O tipo é
LocationType.Custom
se definir a localização comitem.location
.
A tabela seguinte lista as APIs de localização e os modos (ou seja, Compose ou Ler) onde estão disponíveis.
API | Modos de compromisso aplicáveis |
---|---|
item.location | Participante/Leitura |
item.location.getAsync | Organizador/Compose |
item.location.setAsync | Organizador/Compose |
item.enhancedLocation.getAsync | Organizador/Compose, Participante/Leitura |
item.enhancedLocation.addAsync | Organizador/Compose |
item.enhancedLocation.removeAsync | Organizador/Compose |
Para utilizar os métodos que estão disponíveis apenas para compor suplementos, configure o manifesto apenas de suplemento para ativar o suplemento no modo Organizador/Compose. Consulte Criar suplementos do Outlook para compor formulários para obter mais detalhes. As regras de ativação não são suportadas em suplementos que utilizam um manifesto unificado para o Microsoft 365.
Utilizar a enhancedLocation
API
Pode utilizar a enhancedLocation
API para obter e definir a localização de um compromisso. O campo de localização suporta várias localizações e, para cada localização, pode definir o nome a apresentar, o tipo e o endereço de e-mail da sala de conferências (se aplicável). Veja LocationType para obter os tipos de localização suportados.
Adicionar localização
O exemplo seguinte mostra como adicionar uma localização ao chamar addAsync em mailbox.item.enhancedLocation.
let item;
const locations = [
{
"id": "Contoso",
"type": Office.MailboxEnums.LocationType.Custom
}
];
Office.initialize = function () {
item = Office.context.mailbox.item;
// Check for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Add to the location of the item being composed.
item.enhancedLocation.addAsync(locations);
});
}
Obter localização
O exemplo seguinte mostra como obter a localização ao chamar getAsync em mailbox.item.enhancedLocation.
let item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Checks for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Get the location of the item being composed.
item.enhancedLocation.getAsync(callbackFunction);
});
}
function callbackFunction(asyncResult) {
asyncResult.value.forEach(function (place) {
console.log("Display name: " + place.displayName);
console.log("Type: " + place.locationIdentifier.type);
if (place.locationIdentifier.type === Office.MailboxEnums.LocationType.Room) {
console.log("Email address: " + place.emailAddress);
}
});
}
Observação
Os grupos de contactos pessoais adicionados como localizações de compromisso não são devolvidos pelo método enhancedLocation.getAsync .
Remover localização
O exemplo seguinte mostra como remover a localização ao chamar removeAsync em mailbox.item.enhancedLocation.
let item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Checks for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Get the location of the item being composed.
item.enhancedLocation.getAsync(callbackFunction);
});
}
function callbackFunction(asyncResult) {
asyncResult.value.forEach(function (currentValue) {
// Remove each location from the item being composed.
item.enhancedLocation.removeAsync([currentValue.locationIdentifier]);
});
}
Utilizar a location
API
Pode utilizar a location
API para obter e definir a localização de um compromisso.
Obter o local
Esta seção mostra um exemplo de código que obtém o local do compromisso que o usuário está compondo e o exibe.
Para utilizar item.location.getAsync
, forneça uma função de chamada de retorno que verifica a status e o resultado da chamada assíncrona. Pode fornecer os argumentos necessários à função de chamada de retorno através do asyncContext
parâmetro opcional. Pode obter status, resultados e qualquer erro com o parâmetro asyncResult
de saída da chamada de retorno. Se a chamada assíncrona for bem-sucedida, você poderá obter o local como uma cadeia de caracteres usando a propriedade AsyncResult.value.
let item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Checks for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Get the location of the item being composed.
getLocation();
});
}
// Get the location of the item that the user is composing.
function getLocation() {
item.location.getAsync(
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Successfully got the location, display it.
write ('The location is: ' + asyncResult.value);
}
});
}
// Write to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}
Definir o local
Esta seção mostra um exemplo de código que define a localização do compromisso que o usuário está redigindo.
Para usar item.location.setAsync
, especifique uma cadeia de até 255 caracteres no parâmetro de dados. Opcionalmente, pode fornecer uma função de chamada de retorno e quaisquer argumentos para a função de chamada de retorno no asyncContext
parâmetro . Deve marcar o status, o resultado e qualquer mensagem de erro no asyncResult
parâmetro de saída da chamada de retorno. Se a chamada assíncrona for bem-sucedida, setAsync
inserirá a cadeia de caracteres de local especificada como texto sem formatação, substituindo o local existente pelo item.
Observação
Pode definir várias localizações utilizando um ponto e vírgula como separador (por exemplo, "Sala de conferências A; Sala de conferências B').
let item;
Office.initialize = function () {
item = Office.context.mailbox.item;
// Check for the DOM to load using the jQuery ready method.
$(document).ready(function () {
// After the DOM is loaded, app-specific code can run.
// Set the location of the item being composed.
setLocation();
});
}
// Set the location of the item that the user is composing.
function setLocation() {
item.location.setAsync(
'Conference room A',
{ asyncContext: { var1: 1, var2: 2 } },
function (asyncResult) {
if (asyncResult.status == Office.AsyncResultStatus.Failed){
write(asyncResult.error.message);
}
else {
// Successfully set the location.
// Do whatever is appropriate for your scenario,
// using the arguments var1 and var2 as applicable.
}
});
}
// Write to a div with id='message' on the page.
function write(message){
document.getElementById('message').innerText += message;
}