如何用 ONLYOFFICE 宏替换演示文稿中的文字
2023年11月16日作者: Mona
在进行演示时,有很多情况我们需要更改特定单词的所有出现。手动更正可能非常耗时,尤其是当您有大量幻灯片需要处理时。为了简化此过程,我们来构建一个宏,替换演示文稿编辑器中的特定单词。
构建宏
const oPresentation = Api.GetPresentation(); //get the current presentation
首先,我们在 oPresentation 变量中获取当前的演示文稿。
for (
var slideIndex = 0;
slideIndex < oPresentation.GetSlidesCount();
slideIndex++
) {
该宏涉及嵌套的 for 循环。在第一个 for 循环中,我们迭代演示文稿中的所有幻灯片。
var oSlide = oPresentation.GetSlideByIndex(slideIndex);
var aShape = oSlide.GetAllShapes(); //get all the shapes from different slides
这些行获取特定幻灯片中可能出现的所有形状,并将其详细信息推送到 aShape 数组中。
for (var shapeIndex = 0; shapeIndex < aShape.length; shapeIndex++) {
var content = aShape[shapeIndex].GetDocContent();
在第二个 for 循环中,我们获取特定电子表格上每个形状的内容。
if (content) {
var count = content.GetElementsCount();
for (var elementIndex = 0; elementIndex < count; elementIndex++) {
var element = content.GetElement(elementIndex);
我们确保 content 变量存在,并获取 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
);
首先我们确保变量元素有效。如果元素存在,我们复制原始文本并使用 element.delete() 方法删除内容。
接下来,我们在各自的变量中指定要替换的单词和替换单词,并执行替换,将新文本存储在 cleanText 变量中。
var oParagraph = Api.CreateParagraph();
var oRun = Api.CreateRun();
oRun.AddText(cleanedText);
oParagraph.AddElement(oRun);
content.Push(oParagraph);
最后,我们创建一个新段落,并将清理后的文本添加到其中。设置段落元素后,我们使用上面的代码将其添加回幻灯片,替换上面删除的元素。
完整的宏代码
这是宏的完整代码:
(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);
}
}
}
}
}
})();
让我们运行宏看看效果!
我们希望这个宏对你有所帮助,可以简化您的工作流程。
不要错过利用 ONLYOFFICE API 强大功能的机会。我们丰富的 API 方法库是将您的想法变为现实的关键。如果您有任何问题或创新概念,欢迎与我们分享。您的意见非常有价值,我们很高兴能够与您合作。祝您的探索之路好运!
创建免费的 ONLYOFFICE 账户
在线查看并协作编辑文本文档、电子表格、幻灯片、表单和 PDF 文件。