Créez une macro ONLYOFFICE pour remplacer des mots dans vos présentations
Lors d’une présentation, il arrive souvent que nous devions modifier toutes les occurrences d’un mot particulier. Les corrections manuelles peuvent prendre beaucoup de temps, surtout si vous avez beaucoup de diapositives à traiter. Pour faciliter ce processus, nous allons créer une macro pour remplacer un mot spécifique dans l’éditeur de présentations.
Construction de la macro
const oPresentation = Api.GetPresentation(); //get the current presentation
Tout d’abord, nous obtenons la présentation actuelle dans la variable oPresentation.
for (
var slideIndex = 0;
slideIndex < oPresentation.GetSlidesCount();
slideIndex++
) {
Cette macro implique des boucles for imbriquées. Dans cette première boucle for, nous parcourons toutes les diapositives de la présentation.
var oSlide = oPresentation.GetSlideByIndex(slideIndex);
var aShape = oSlide.GetAllShapes(); //get all the shapes from different slides
Ces lignes récupèrent toutes les formes qui peuvent être présentes dans une diapositive particulière et placent leurs détails dans le tableau aShape.
for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
var content = aShape[shapeIndex].GetDocContent();
Dans cette deuxième boucle for, nous obtenons le contenu de chaque forme sur une feuille de calcul particulière.
if (content) {
var count = content.GetElementsCount();
for (var elementIndex = 0; elementIndex < count; elementIndex++) {
var element = content.GetElement(elementIndex);
Nous nous assurons que la variable content existe et nous obtenons le nombre de tous les éléments présents dans le content.
if (element) {
const rawText = element.GetText(); //gets the text from a particular element
element.Delete(); //delete the content
const wordToFind = "apple"; // Replace "apple" with the word you want to find
const replacementWord = "banana"; // Replace "banana" with the word you want to replace it with
const cleanedText = rawText.replace(
new RegExp(wordToFind, "g"),
replacementWord
);
Tout d’abord, nous nous assurons que la variable element est valide. Si l’élément existe, nous copions le texte original et supprimons le contenu à l’aide de la méthode element.delete().
Ensuite, nous spécifions le mot à remplacer et le mot de remplacement dans leurs variables respectives, et nous effectuons le remplacement, en stockant le nouveau texte dans la variable cleanedText.
var oParagraph = Api.CreateParagraph();
var oRun = Api.CreateRun();
oRun.AddText(cleanedText);
oParagraph.AddElement(oRun);
content.Push(oParagraph);
Enfin, nous créons un nouveau paragraphe et y ajoutons cleanedText. Une fois l’élément paragraphe configuré, nous l’ajoutons à la diapositive, en remplacement de celui que nous avons supprimé ci-dessus, à l’aide du code ci-dessus.
Code complet de la macro
Voici le code complet de la macro :
(function () {
const oPresentation = Api.GetPresentation(); //get the current presentation
for (
var slideIndex = 0;
slideIndex < oPresentation.GetSlidesCount();
slideIndex++
) {
var oSlide = oPresentation.GetSlideByIndex(slideIndex);
var aShape = oSlide.GetAllShapes(); //get all the shapes from different slides
for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
var content = aShape[shapeIndex].GetDocContent();
// Check if content exists before proceeding
if (content) {
var count = content.GetElementsCount();
for (var elementIndex = 0; elementIndex < count; elementIndex++) {
var element = content.GetElement(elementIndex);
// Check if element is valid before using it
if (element) {
const rawText = element.GetText(); //gets the text from a particular element
element.Delete(); //delete the content
const wordToFind = "apple"; // Replace "apple" with the word you want to find
const replacementWord = "banana"; // Replace "banana" with the word you want to replace it with
const cleanedText = rawText.replace(
new RegExp(wordToFind, "g"),
replacementWord
);
//creates a new paragragh, and restores the content which was deleted, with the cleaned text.
var oParagraph = Api.CreateParagraph();
var oRun = Api.CreateRun();
oRun.AddText(cleanedText);
oParagraph.AddElement(oRun);
content.Push(oParagraph);
}
}
}
}
}
})();
Exécutons notre macro et voyons les résultats !
Nous espérons que cette macro vous a été utile et qu’elle vous a permis de rationaliser votre processus de présentation.
Ne manquez pas l’occasion d’exploiter la puissance de l’API ONLYOFFICE. Notre vaste bibliothèque de méthodes API est votre clé pour transformer vos idées en réalité. Si vous avez des questions ou des concepts innovants, nous vous encourageons à les partager avec nous. Votre contribution est très appréciée et nous sommes ravis de pouvoir collaborer avec vous. Nous vous souhaitons bonne chance dans vos projets exploratoires !