كيفية البحث عن النص واستبداله في مستندات Google باستخدام أنماط بحث RegEx

من السهل البحث عن النص واستبداله في مستندات Google باستخدام DocumentApp
خدمة Google Apps Script. يمكنك استخدام الاستخدام findText
طريقة مع تعبيرات عادية بسيطة للعثور على عناصر النص في المستند التي تتطابق مع النمط واستبدالها بالنص المحدد.
فيما يلي نموذج تعليمات برمجية بسيط يستبدل التواجد الأول لـ “GSuite” بـ “Google Workspace” في مستند Google النشط.
const searchAndReplaceInGoogleDocs = () => {
const searchText = 'GSuite';
const replaceText = 'Google Workspace';
const document = DocumentApp.getActiveDocument();
const documentBody = document.getBody();
const searchResult = documentBody.findText(searchText);
if (searchResult !== null) {
const startIndex = searchResult.getStartOffset();
const endIndex = searchResult.getEndOffsetInclusive();
const textElement = searchResult.getElement().asText();
textElement.deleteText(startIndex, endIndex);
textElement.insertText(startIndex, replaceText);
}
document.saveAndClose();
};
كل شيء جيد وجيد، ولكن في بعض الحالات، قد تفشل وظيفة البحث والاستبدال البسيطة هذه إذا لم يتحول نص البحث إلى تعبير عادي صالح.
على سبيل المثال، إذا كان لديك كتلة نصية مثل Hello (World
في المستند (لاحظ القوس المفتوح الإضافي) الذي تريد استبداله Hello World
، سيفشل المقتطف أعلاه مع ظهور رسالة خطأ تقول Exception: Invalid regular expression pattern
.
للتغلب على المشكلة، من الجيد استبدال كافة الأحرف الخاصة في نمط البحث التي لها معنى خاص في عالم RegEx. يتضمن ذلك أحرفًا مثل الواصلة أو الأقواس أو علامات الاستفهام أو رمز الزائد.
ستصبح وظيفة البحث والاستبدال المعدلة لدينا بعد ذلك:
const escapeRegex = (str) => str.replace(/[-[\]/{}()*+?.\\^$|#]/g, '\\$&');
const searchAndReplaceInGoogleDocs = () => {
const searchText = 'Hello (World';
const replaceText = 'Hello World';
const document = DocumentApp.getActiveDocument();
const documentBody = document.getBody();
const searchResult = documentBody.findText(escapeRegex(searchText));
if (searchResult !== null) {
const startIndex = searchResult.getStartOffset();
const endIndex = searchResult.getEndOffsetInclusive();
const textElement = searchResult.getElement().asText();
textElement.deleteText(startIndex, endIndex);
textElement.insertText(startIndex, replaceText);
}
document.saveAndClose();
};
اكتشاف المزيد من مرابع التكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.