Desfazer o suporte com a API JavaScript do Excel

Os suplementos do Excel dão suporte ao comportamento de desfazer. Isso preserva as ações executadas pelas APIs JavaScript do Excel e as ações executadas pelo usuário no Excel. Essas ações são salvas na pilha de desfazer para um usuário individual, permitindo que o usuário recue em suas ações quando desejado.

Desfazer agrupamento

A API JavaScript do Excel também dá suporte ao agrupamento desfazer. Isso permite agrupar várias chamadas de API em uma única ação que pode ser desfeita para o usuário do suplemento. Por exemplo, se o suplemento precisar fazer várias atualizações diferentes em várias planilhas em resposta a um único comando de usuário, você poderá encapsular todas essas atualizações em um único grupo. Isso é feito com a mergeUndoGroup propriedade fornecida à Excel.run função.

Se uma API dentro do grupo não oferecer suporte a desfazer, o UndoNotSupported erro será gerado para que você saiba que a operação não pode ser agrupada. Seu suplemento deve lidar normalmente com esse erro e apresentar uma mensagem razoável ao usuário.

O exemplo de código a seguir mostra como mesclar várias ações com mergeUndoGroup set to true.

Importante

Verifique se todas as chamadas de API agrupadas dão suporte a desfazer para evitar erros. Consulte APIs sem suporte para obter mais informações.

await Excel.run({ mergeUndoGroup: true }, async (context) => { 
    const sheet = context.workbook.worksheets.getActiveWorksheet(); 
    let range = sheet.getRange("A1"); 
    range.values = [["123"]]; 
    
    await context.sync(); 
    
    range = sheet.getRange("B2"); 
    range.values = [["456"]];

    await context.sync(); 
}); 

APIs sem suporte

A maioria das APIs JavaScript do Excel dá suporte a ações de desfazer. No entanto, consulte a tabela a seguir para obter uma lista de APIs que não dão suporte ao comportamento de desfazer.

Dica

Se você chamar uma API sem suporte em seu suplemento, a pilha de desfazer do usuário será limpa a partir dessa chamada à API, e um usuário não poderá desfazer ações após esse ponto.

API Com suporte no Excel na Web Com suporte no Excel no Windows e Excel no Mac Observações
AllowEditRange.address Não Não Nenhum
AllowEditRange.delete Não Não Nenhum
AllowEditRange.pauseProtection Não Não Nenhum
AllowEditRange.setPassword Não Não Nenhum
AllowEditRange.title Não Não Nenhum
AllowEditRangeCollection.add Não Não Nenhum
AllowEditRangeCollection.pauseProtection Não Não Nenhum
Chart.categoryLabelLevel Não Não Nenhum
Chart.seriesNameLevel Não Não Nenhum
ChartPivotOptions.showAxisFieldButtons Não Sim Nenhum
ChartPivotOptions.showLegendFieldButtons Não Sim Nenhum
ChartPivotOptions.showReportFilterFieldButtons Não Sim Nenhum
ChartPivotOptions.showValueFieldButtons Não Sim Nenhum
ChartTrendlineLabel.formula Não Sim Nenhum
DataConnectionCollection.refreshAll Não Não Nenhum
DocumentProperties.author​ Não Sim Nenhum
DocumentProperties.category Não Sim Nenhum
DocumentProperties.comments Não Sim Nenhum
DocumentProperties.company Não Sim Nenhum
DocumentProperties.keywords Não Sim Nenhum
DocumentProperties.manager Não Sim Nenhum
DocumentProperties.revisionNumber Não Sim Nenhum
DocumentProperties.subject Não Sim Nenhum
DocumentProperties.title Não Sim Nenhum
LinkedWorkbook.refresh Não Não Nenhum
LinkedWorkbookCollection.refreshAll Não Não Nenhum
NamedItem.comment Não Sim Nenhum
PivotTableStyle.delete Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
PivotTableStyle.duplicate Não Sim Nenhum
PivotTableStyle.name Não Sim Nenhum
PivotTableStyleCollection.add Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
PivotTableStyleCollection.setDefault Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
Query.delete Não Sim A API dá suporte ao desfazer no Excel no Windows e Mac, mas não dá suporte a refazer.
Query.refresh Não Sim A API dá suporte a desfazer do Excel no Windows e no Mac, mas não dá suporte a refazer.
QueryCollection.refreshAll Não Sim A API dá suporte a desfazer do Excel no Windows e no Mac, mas não dá suporte a refazer.
Slicer.name Não Sim Nenhum
Slicer.nameInFormula Não Sim Nenhum
SlicerStyle.delete Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
SlicerStyle.duplicate Não Sim Nenhum
SlicerStyle.name Não Sim Nenhum
SlicerStyleCollection.add Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
SlicerStyleCollection.setDefault Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
Style.addIndent Não Sim Nenhum
Style.autoIndent Não Sim Nenhum
Style.formulaHidden Não Sim Nenhum
Style.horizontalAlignment Não Sim Nenhum
Style.includeAlignment Não Sim Nenhum
Style.includeBorder Não Sim Nenhum
Style.includeFont Não Sim Nenhum
Style.includeNumber Não Sim Nenhum
Style.includePatterns Não Sim Nenhum
Style.includeProtection Não Sim Nenhum
Style.indentLevel Não Sim Nenhum
Style.locked Não Sim Nenhum
Style.numberFormat Não Sim Nenhum
Style.numberFormatLocal Não Sim Nenhum
Style.orientation Não Sim Nenhum
Style.readingOrder Não Sim Nenhum
Style.shrinkToFit Não Sim Nenhum
Style.textOrientation Não Sim Nenhum
Style.verticalAlignment Não Sim Nenhum
Style.wrapText Não Sim Nenhum
TableStyle.delete Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
TableStyle.duplicate Não Sim Nenhum
TableStyle.name Não Sim Nenhum
TableStyleCollection.add Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
TableStyleCollection.setDefault Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
TimelineStyle.delete Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
TimelineStyle.duplicate Não Sim Nenhum
TimelineStyle.name Não Sim Nenhum
TimelineStyleCollection.add Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
TimelineStyleCollection.setDefault Não Sim A API não dá suporte ao desfazer de coautoria no Excel no Windows e Mac.
Workbook.close Não Não Nenhum
Workbook.insertWorksheetsFromBase64 Não Não Nenhum
Workbook.save Não Não Nenhum
WorkbookProtection.protect Não Não Nenhum
WorkbookProtection.unprotect Não Não Nenhum
Worksheet.copy Não Não Nenhum
Worksheet.delete Não Não Nenhum
Worksheet.name Sim Não Nenhum
Worksheet.standardWidth Não Sim Nenhum
Worksheet.position Sim Não Nenhum
Worksheet.visibility​ Sim Não Nenhum
WorksheetCollection.addFromBase64 Não Não Nenhum
WorksheetProtection.pauseProtection Não Não Nenhum
WorksheetProtection.protect Não Não Nenhum
WorksheetProtection.resumeProtection Não Não Nenhum
WorksheetProtection.setPassword Não Não Nenhum
WorksheetProtection.unprotect Não Não Nenhum
WorksheetProtection.updateOptions Não Não Nenhum

Confira também