【发布时间】:2020-12-08 15:47:14
【问题描述】:
我有许多带有页眉和页脚的 Google 文档。我们的 Intranet 上存在指向这些文档的多个链接,因此我不想制作新文档。有数百个文档需要更新。
我需要更新这些文档中的实际地址和页眉/页脚信头。我还需要复制页眉和页脚中的图像、格式、表格等。
我希望它们更像 CSS 或模板,可以同时在多个文档中进行更改。
为了做到这一点,已经用尽了多种考虑:
-
将带有新页眉和页脚的模板应用于现有文档 - 似乎不可能。每个都必须手动复制和粘贴。
-
Dreamweaver 等应用程序允许您查找和替换文件夹中的所有文件。我无法在 Google Docs 中找到这样做的方法。
有没有办法自动化这个繁琐的过程?甚至是起点提示!
function replaceHeaderAndFooter() {
var headerToCopyandPaste = DocumentApp.openById("<SourceDocID>").getHeader().copy(); // ID contains source header
var footerToCopyandPaste = DocumentApp.openById("<SourceDocID>").getHeader().copy(); // ID contains source footer
var files = DriveApp.getFolderById("<FOLDER ID>").getFiles();
while (files.hasNext()) {
var file = files.next();
var doc = DocumentApp.openById(file.getId());
var headerSectionToBeReplaced = doc.getHeader()
var footerSectionToBeReplaced = doc.getFooter()
headerSectionToBeReplaced.clear()
headerSectionToBeReplaced = headerToCopyandPaste
}
}
例如,我还尝试将模板中的所有内容(图像、段落、格式)放入页眉的单个表格中。此代码也不起作用。以下代码导致以下错误:
参数(字符串)与 DocumentApp.HeaderSection.appendTable 的方法签名不匹配
function replaceHeaderAndFooter() {
const headerToCopyandPaste = DocumentApp.openById("<SourceDocID>").getHeader().getTables().toString(); // ID contains source header
const footerToCopyandPaste = DocumentApp.openById("<SourceDocID>").getHeader().copy(); // ID contains source footer
var files = DriveApp.getFolderById("<FolderID>").getFiles(); //ID contains folder that has Google Docs that will have Header and Footer Replaced
while (files.hasNext()) {
var file = files.next();
var doc = DocumentApp.openById(file.getId());
var headerSectionToBeReplaced = doc.getHeader()
var footerSectionToBeReplaced = doc.getFooter()
headerSectionToBeReplaced.clear();
headerSectionToBeReplaced.appendTable(headerToCopyandPaste)
}
}
【问题讨论】:
标签: google-apps-script google-docs drive