Adicionar e excluir slides no PowerPoint
Um suplemento do PowerPoint pode adicionar slides à apresentação e, opcionalmente, especificar qual mestre de slides e qual layout do mestre é usado para o novo slide. O suplemento também pode excluir slides.
As APIs para adicionar slides são usadas principalmente em cenários em que as IDs dos mestres e layouts de slides na apresentação são conhecidas na hora da codificação ou podem ser encontradas em uma fonte de dados no runtime. Nesse cenário, você ou o cliente devem criar e manter uma fonte de dados que correlaciona o critério de seleção (como os nomes ou imagens de mestres e layouts de slides) com as IDs dos mestres e layouts do slide. As APIs também podem ser usadas em cenários em que o usuário pode inserir slides que usam o mestre de slides padrão e o layout padrão do mestre, e em cenários em que o usuário pode selecionar um slide existente e criar um novo com o mesmo mestre de slides e layout (mas não o mesmo conteúdo). Consulte Selecionar qual mestre de slides e layout usar para obter mais informações sobre isso.
Adicionar um slide com SlideCollection.add
Adicione slides com o método SlideCollection.add . Veja a seguir um exemplo simples no qual um slide que usa o mestre de slides padrão da apresentação e o primeiro layout desse mestre é adicionado. O método sempre adiciona novos slides ao final da apresentação. Apresentamos um exemplo a seguir.
async function addSlide() {
await PowerPoint.run(async function(context) {
context.presentation.slides.add();
await context.sync();
});
}
Selecione qual mestre de slides e layout usar
Use o parâmetro AddSlideOptions para controlar qual mestre de slides é usado para o novo slide e qual layout dentro do mestre é usado. Apresentamos um exemplo a seguir. Sobre este código, observe:
- Você pode incluir ou ambas as propriedades do
AddSlideOptions
objeto. - Se ambas as propriedades forem usadas, o layout especificado deverá pertencer ao mestre especificado ou um erro será gerado.
- Se a
masterId
propriedade não estiver presente (ou seu valor for uma cadeia de caracteres vazia), o mestre de slides padrão será usado e olayoutId
deve ser um layout desse mestre de slides. - O mestre de slides padrão é o mestre de slides usado pelo último slide na apresentação. (No caso incomum em que atualmente não há slides na apresentação, o mestre de slides padrão é o primeiro mestre de slides na apresentação.)
- Se a
layoutId
propriedade não estiver presente (ou seu valor for uma cadeia de caracteres vazia), o primeiro layout do mestre especificado pelomasterId
é usado. - Ambas as propriedades são cadeias de caracteres de uma das três formas possíveis: nnnnnnnnnnnn#, #mmmmmmmmm ou nnnnnnnnmmmmmmmmm#, onde nnnnnnnnnnnn é a ID do mestre ou do layout (normalmente 10 dígitos) e mmmmmmmmmmmmm é a ID de criação do mestre ou 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á nenhuma maneira prática de que os usuários possam descobrir a ID ou a ID de criação de um mestre de slides ou layout. Por esse motivo, você só pode usar o AddSlideOptions
parâmetro quando souber que as IDs na hora da codificação ou seu suplemento podem descobri-las em runtime. Como os usuários não podem ser esperados para memorizar as IDs, você também precisa de uma maneira de permitir que o usuário selecione slides, talvez pelo nome ou por uma imagem, e correlacionar cada título ou imagem com a ID do slide.
Assim, o AddSlideOptions
parâmetro é usado principalmente em cenários em que o suplemento foi projetado para funcionar com um conjunto específico de mestres de slides e layouts cujas IDs são conhecidas. Nesse cenário, você ou o cliente devem criar e manter uma fonte de dados que correlaciona um critério de seleção (como nomes ou imagens mestre de slides e layout) com as IDs correspondentes ou IDs de criação.
Fazer com que o usuário escolha 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 mestre e layout que é usado por um slide existente , o suplemento poderá (1) solicitar que o usuário selecione um slide e (2) leia as IDs do mestre e layout do slide. As etapas a seguir mostram como ler as IDs e adicionar um slide com um mestre 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 a ser
getSelectedDataAsync
inserida 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 promessas. getSelectedDataAsync
retorna uma matriz porque vários slides podem ser selecionados. Nesse cenário, o usuário selecionou apenas um, portanto, o código obtém o primeiro slide (0º), que é o único selecionado.- O
index
valor do slide é o valor baseado em 1 que o usuário vê ao lado do slide no painel 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 chame o Slide.delete
método. Veja a seguir um exemplo no qual 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();
});
}