كيفية العمل مع علامات تبويب المستندات في Google Apps Script

يتيح لك محرر مستندات Google الآن تنظيم مستنداتك في علامات تبويب وعلامات تبويب فرعية. يعد هذا التغيير مفيدًا بشكل خاص لإدارة المستندات الطويلة مثل كتيبات الموظفين وأدلة التدريب. نظرًا لأن المستند مقسم الآن إلى أقسام متعددة، أصبح التنقل عبر المستند أكثر سهولة وأسهل.
ومع ذلك، يؤثر هذا التغيير الهيكلي بشكل كبير على كيفية تعاملنا مع المستندات من خلال خدمة DocumentApp في Google Apps Script.
في السابق، كان محرر مستندات Google يتعامل مع المستند بأكمله ككيان واحد. بفضل البنية المبوبة الجديدة، أصبحت كل علامة تبويب الآن مستندًا بحد ذاته بنصه الأساسي ورأسه وتذييله وحواشيه السفلية. سيلزم تحديث رمز Google Apps Script للعمل مع بنية المستند الجديدة.
اسمحوا لي أن أشرح مع بعض الأمثلة:
البحث عن النص واستبداله
في الإصدار غير المبوب من محرر مستندات Google، يمكنك الحصول على نص المستند واستخدام طريقة findText للبحث عن النص واستبداله.
const findAndReplaceText = (searchText, replaceText) => {
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);
}
};
العمل مع علامات تبويب متعددة
سيظل الكود أعلاه يعمل في الإصدار المبوب من محرّر مستندات Google. ومع ذلك، فإنها ستعمل فقط على علامة التبويب الأولى (الافتراضية) أو علامة التبويب النشطة حاليًا. إذا كان لديك مستند يحتوي على علامات تبويب متعددة، فستحتاج إلى تطبيق نفس العمليات على كل علامة تبويب للعثور على النص واستبداله في المستند بأكمله.
احصل على قائمة علامات تبويب المستندات
للعمل مع كافة علامات التبويب في المستند، نحتاج أولاً إلى وظيفة لاسترداد جميع علامات التبويب في المستند.
const getDocumentTabs = (document) => {
const allTabs = [];
const collectTabs = (tabs = []) => {
tabs.forEach((tab) => {
if (tab.getType() === DocumentApp.TabType.DOCUMENT_TAB) {
allTabs.push(tab);
collectTabs(tab.getChildTabs());
}
});
};
collectTabs(document.getTabs());
return allTabs;
};
البحث عن النص واستبداله في علامات تبويب المستندات
الآن بعد أن أصبح لديك مصفوفة من جميع علامات التبويب (علامات التبويب الرئيسية وعلامات التبويب الفرعية)، يمكنك تطبيق عمليات البحث والاستبدال على كل علامة تبويب.
const findAndReplaceTextInAllTabs = (searchText, replaceText) => {
const document = DocumentApp.getActiveDocument();
const allTabs = getDocumentTabs(document);
allTabs.forEach((tab) => {
findAndReplaceTextInTab(searchText, replaceText, tab);
});
document.saveAndClose();
};
const findAndReplaceTextInTab = (searchText, replaceText, tab) => {
const tabBody = tab.getBody();
const searchResult = tabBody.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);
}
};
تصدير مستندات جوجل إلى PDF
دعونا نلقي نظرة على مثال آخر حيث تريد تصدير مستند Google Docs إلى ملف PDF أو مستند Word.
في الإصدار غير المبوب من محرّر مستندات Google، يمكنك استخدام Google Drive API لتصدير مستند محرّر مستندات Google بالكامل إلى تنسيق آخر.
const exportGoogleDocumentToPdf = () => {
const document = DocumentApp.getActiveDocument();
const fileId = document.getId();
const exportMime = 'application/pdf';
const baseUrl = 'https://www.googleapis.com/drive/v3/files';
const apiUrl = `${baseUrl}/${fileId}/export?mimeType=${encodeURIComponent(exportMime)}`;
const response = UrlFetchApp.fetch(apiUrl, {
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
}
});
const blob = response.getBlob();
const fileName = `${document.getName()}.pdf`;
const file = DriveApp.createFile(blob);
Logger.log(`Exported Google document to PDF: ${file.getUrl()}`);
};
ستستمر وظيفة التصدير في العمل في الإصدار المبوب الجديد من محرّر مستندات Google. ومع ذلك، فإنه سيتم تصدير المستند بأكمله كمستند PDF أو Word واحد. إذا كنت تريد تصدير كل علامة تبويب كمستند منفصل، فسيتعين عليك إجراء بعض التغييرات على التعليمات البرمجية.
تصدير علامات تبويب Google محددة بصيغة PDF
لقد كتبنا سابقًا وظيفة للحصول على قائمة علامات التبويب في مستند Google Docs. يمكنك توسيع هذا الرمز بشكل أكبر للحصول على قائمة بجميع معرفات علامات التبويب وأسمائها.
const getDocumentTabIds = (document) => {
const allTabs = getDocumentTabs(document);
return allTabs.map((tab) => tab.getId());
};
يمكنك بعد ذلك استخدام معرفات علامات التبويب لتصدير كل علامة تبويب كملف PDF أو مستند Word منفصل. يرجى ملاحظة أن نقطة نهاية التصدير لدينا ستتغير نظرًا لأن Drive API لا يدعم تصدير علامات التبويب الفردية.
const exportDocumentTabsToPdf = (documentId, tabId) => {
const baseUrl = 'https://docs.google.com/document/export';
const exportUrl = `${baseUrl}?id=${documentId}&exportFormat=pdf&tabId=${tabId}`;
const response = UrlFetchApp.fetch(exportUrl, {
headers: {
Authorization: `Bearer ${ScriptApp.getOAuthToken()}`
}
});
const blob = response.getBlob();
const file = DriveApp.createFile(blob);
Logger.log(`Exported tab ${tabId} to PDF: ${file.getUrl()}`);
};
الأمر نفسه ينطبق على الرؤوس والتذييلات في محرر مستندات Google.
ال document.getHeader()
و document.getFooter()
ستعيد الأساليب الآن رأس وتذييل علامة التبويب الحالية. لتعديل الرؤوس والتذييلات عبر كافة علامات التبويب، ستحتاج إلى تطبيق التغييرات على كل علامة تبويب على حدة.
تكامل استوديو المستندات
يتيح لك الملحق Document Studio إنشاء مستندات مخصصة من قوالب مستندات Google. يمكنك أيضًا دمج مستندات متعددة في مستند واحد. الملحق متوافق الآن مع الإصدار المبوب من محرر مستندات Google.
اكتشاف المزيد من مرابع التكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.