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

تتيح لك مستندات Google الآن تنظيم مستنداتك في علامات التبويب والتبادل الفرعي. هذا التغيير مفيد بشكل خاص لإدارة المستندات الطويلة مثل كتيبات الموظفين وأدلة التدريب. نظرًا لأن المستند مقسم الآن إلى أقسام متعددة ، فإن التنقل عبر المستند أكثر سهولة وأسهل.
ومع ذلك ، فإن هذا التغيير الهيكلي يؤثر بشكل كبير على كيفية عملنا مع المستندات من خلال خدمة DocumentApp الخاصة بـ Google Apps Script.
في السابق ، تعامل مستندات Google مع المستند بأكمله ككيان واحد. مع بنية العلامات الجديدة ، أصبحت كل علامة تبويب الآن مستندًا مع جسمه ورأسه وتذييله وحشائشه. يجب تحديث رمز البرنامج النصي لـ Google Apps للعمل مع بنية المستند الجديدة.
اسمحوا لي أن أشرح مع بعض الأمثلة:
العثور على النص واستبداله
في الإصدار غير المتواصل من مستندات 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);
}
};
تصدير مستندات Google إلى PDF
دعونا نلقي نظرة على مثال آخر حيث تريد تصدير مستند مستندات Google إلى PDF أو مستند Word.
في الإصدار غير المحبب من مستندات Google ، يمكنك استخدام واجهة برمجة تطبيقات Google Drive لتصدير مستند مستندات 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. يمكنك زيادة توسيع هذا الرمز للحصول على قائمة جميع معرفات TAB وأسمائها.
const getDocumentTabIds = document => {
const allTabs = getDocumentTabs(document);
return allTabs.map(tab => tab.getId());
};
يمكنك بعد ذلك استخدام معرفات TAB لتصدير كل علامة تبويب كمستند منفصل PDF أو Word. يرجى ملاحظة أن نقطة نهاية التصدير الخاصة بنا ستتغير لأن واجهة برمجة تطبيقات محرك الأقراص لا تدعم تصدير علامات التبويب الفردية.
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()
ستعود الأساليب الآن إلى رأس وتذييل علامة التبويب الحالية. لتعديل الرؤوس والتذييلات في جميع علامات التبويب ، ستحتاج إلى تطبيق التغييرات على كل علامة تبويب على حدة.
مستند استوديو تكامل
يتيح لك Advice Studio Addon إنشاء مستندات مخصصة من قوالب مستندات Google. يمكنك حتى الجمع بين مستندات متعددة في مستند واحد. أصبح الملحق متوافقًا الآن مع الإصدار المتبادل من مستندات Google.
اكتشاف المزيد من مرابع التكنولوجيا
اشترك للحصول على أحدث التدوينات المرسلة إلى بريدك الإلكتروني.