Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Adicione e remova rapidamente slides de uma apresentação do PowerPoint usando um suplemento.
- Adicione slides programaticamente com
SlideCollection.add()e controle o master e o layout quando necessário. - Corresponda ao master ou layout de um slide existente ou escolha específico
slideMasterIdelayoutIdem tempo de execução. - Excluir slides por referência ou índice; Sempre inclua
await context.sync()após as alterações. - Tempo estimado: Experimente os exemplos curtos em ~2–5 minutos.
As APIs para adicionar slides são usadas principalmente em cenários em que as IDs dos slides mestres e layouts na apresentação são conhecidas no momento da codificação ou podem ser encontradas em uma fonte de dados em tempo de execução. Em tal cenário, você ou o cliente devem criar e manter uma fonte de dados que correlacione o critério de seleção (como os nomes ou imagens de slides mestres e layouts) com as IDs dos slides mestres e layouts. As APIs também podem ser usadas em cenários em que o usuário pode inserir slides que usam o slide master padrão e o layout padrão do master, e em cenários em que o usuário pode selecionar um slide existente e criar um novo com o mesmo slide master e layout (mas não o mesmo conteúdo). Consulte Seleção de qual slide master e layout usar para obter mais informações sobre isso.
Adicionar um slide com SlideCollection.add
Adicione slides com o método SlideCollection.add . A seguir, um exemplo em que um slide que usa o master de slides padrão da apresentação e o primeiro layout desse master é adicionado. O método sempre adiciona novos slides ao final da apresentação.
async function addSlide() {
await PowerPoint.run(async function(context) {
context.presentation.slides.add();
await context.sync();
});
}
Selecione qual master de slide e layout usar
Use o parâmetro AddSlideOptions para controlar qual slide mestre é usado para o novo slide e qual layout dentro do master é usado. Apresentamos um exemplo a seguir. Sobre este código, observe:
- Você pode incluir uma ou ambas as propriedades do
AddSlideOptionsobjeto. - Se ambas as propriedades forem usadas, o layout especificado deverá pertencer ao master especificado ou um erro será gerado.
- Se a
masterIdpropriedade não estiver presente (ou seu valor for uma cadeia de caracteres vazia), o slide master padrão será usado elayoutIddeverá ser um layout desse slide master. - O slide master padrão é o slide master usado pelo último slide da apresentação. (No caso incomum em que atualmente não há slides na apresentação, o slide master padrão é o primeiro slide master na apresentação.)
- Se a
layoutIdpropriedade não estiver presente (ou seu valor for uma cadeia de caracteres vazia), o primeiro layout do master especificado pelamasterIdserá usado. - Ambas as propriedades são cadeias de caracteres de uma das três formas possíveis: nnnnnnnnnn#, #mmmmmmmmm ou nnnnnnnnnn#mmmmmmmmm, em que nnnnnnnnnn é a ID do master ou do layout (normalmente 10 dígitos) e mmmmmmmmm é a ID de criação do master ou do layout (normalmente 6 a 10 dígitos). Alguns exemplos são
2147483690#2908289500,2147483690#, e#2908289500.
async function addSlide() {
await PowerPoint.run(async function(context) {
context.presentation.slides.add({
slideMasterId: "2147483690#2908289500",
layoutId: "2147483691#2499880"
});
await context.sync();
});
}
Não há uma maneira prática para os usuários descobrirem a ID ou a ID de criação de um slide master ou layout. Por esse motivo, você só poderá usar o AddSlideOptions parâmetro quando souber as IDs no momento da codificação ou se o suplemento puder descobri-las em tempo de execução. Como não é possível esperar que os usuários memorizem as IDs, você também precisa de uma maneira de permitir que o usuário selecione slides, talvez por nome ou por uma imagem, e correlacione cada título ou imagem com a ID do slide.
Assim, o AddSlideOptions parâmetro é usado principalmente em cenários nos quais o suplemento foi projetado para trabalhar com um conjunto específico de slides mestres e layouts cujas IDs são conhecidas. Nesse cenário, você ou o cliente devem criar e manter uma fonte de dados que correlacione um critério de seleção (como nomes ou imagens de slide master e layout) com as IDs ou IDs de criação correspondentes.
Peça ao usuário para escolher um slide correspondente
Se o suplemento puder ser usado em cenários em que o novo slide deve usar a mesma combinação de slide master e layout usada por um slide existente, o suplemento poderá (1) solicitar que o usuário selecione um slide e (2) ler as IDs do slide mestre e do layout. As etapas a seguir mostram como ler as IDs e adicionar um slide com um master e layout correspondentes.
Crie uma função para obter o índice do slide selecionado. Apresentamos um exemplo a seguir. Sobre este código, observe:
- Ele usa o método Office.context.document.getSelectedDataAsync das APIs JavaScript comuns.
- A chamada para
getSelectedDataAsyncestá incorporada em uma função de retorno de promessa. Para obter mais informações sobre por que e como fazer isso, consulte Encapsular APIs comuns em funções de retorno de promessa. -
getSelectedDataAsyncRetorna uma matriz porque vários slides podem ser selecionados. Nesse cenário, o usuário selecionou apenas um, de modo que o código obtém o primeiro (0º) slide, que é o único selecionado. - O
indexvalor do slide é o valor baseado em 1 que o usuário vê ao lado do slide no painel de miniaturas.
function getSelectedSlideIndex() { return new OfficeExtension.Promise<number>(function(resolve, reject) { Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange, function(asyncResult) { try { if (asyncResult.status === Office.AsyncResultStatus.Failed) { reject(console.error(asyncResult.error.message)); } else { resolve(asyncResult.value.slides[0].index); } } catch (error) { reject(console.log(error)); } }); }); }Chame sua nova função dentro do PowerPoint.run() da função principal que adiciona o slide. Apresentamos um exemplo a seguir.
async function addSlideWithMatchingLayout() { await PowerPoint.run(async function(context) { let selectedSlideIndex = await getSelectedSlideIndex(); // Decrement the index because the value returned by getSelectedSlideIndex() // is 1-based, but SlideCollection.getItemAt() is 0-based. const realSlideIndex = selectedSlideIndex - 1; const selectedSlide = context.presentation.slides.getItemAt(realSlideIndex).load("slideMaster/id, layout/id"); await context.sync(); context.presentation.slides.add({ slideMasterId: selectedSlide.slideMaster.id, layoutId: selectedSlide.layout.id }); await context.sync(); }); }
Excluir slides
Exclua um slide obtendo uma referência ao objeto Slide que representa o slide e, em seguida, chamando o método Slide.delete . Veja a seguir um exemplo em que o 4º slide é excluído.
async function deleteSlide() {
await PowerPoint.run(async function(context) {
// The slide index is zero-based.
const slide = context.presentation.slides.getItemAt(3);
slide.delete();
await context.sync();
});
}
Considerações
-
IDs mestre/layout são opacas:
slideMasterIdelayoutIdsão cadeias de caracteres de ID (geralmente tokens numéricos longos). Não há nenhuma interface do usuário para os usuários descobri-los, portanto, seu suplemento deve mapear nomes amigáveis ou miniaturas para IDs em tempo de execução. -
Diferenças de índice:
Office.context.document.getSelectedDataAsync(Office.CoercionType.SlideRange)retorna índices de slide baseados em 1.slides.getItemAt(...)é baseado em 0 — subtraia 1 ao usar o valor. -
Chamada
context.sync()após mutações: a adição ou exclusão de slides tem efeito no documento; sempre incluaawait context.sync()após a chamadaadd()oudelete()para garantir que as alterações sejam aplicadas. -
O layout deve pertencer ao master: Se você fornecer ambos
slideMasterIdelayoutId, o layout deve pertencer a esse master ou um erro será gerado. - Trabalhe em cópias para alterações em massa: a exclusão de slides é imediata. Considere avisar os usuários ou operar em uma cópia ao executar exclusões em lote.