使用Apps Script修改Google Form同步至Google Doc页眉的字体样式
解决方案
你当前的代码仅操作了文档正文内容,没有调用页眉相关API,也没有对替换后的文本设置格式,按以下修改即可实现需求:
function autofillGoogleDocfromForm(e) { var timestamp = e.values[0]; var firstName = e.values[1]; var lastName = e.values[2]; var position = e.values[3]; var building = e.values[4]; var phoneNumber = e.values[5]; var email = e.values[6]; var address = e.values [7]; var templateFile = DriveApp.getFileById("1vCOrwCZAAQiiZmLgPi_74xy65ws8u1DqRW05eukgisI"); var templateResponseFolder = DriveApp.getFolderById("1rFCugcmL8uLMeBwQSZ8FJ4Sol4bmpwa6"); var copy = templateFile.makeCopy(lastName + ' , ' + firstName, templateResponseFolder); var doc = DocumentApp.openById(copy.getId()); // 获取页眉对象 var header = doc.getHeader(); // 替换页眉中的占位符 header.replaceText("{{FirstName}}",firstName); header.replaceText("{{LastName}}",lastName); header.replaceText("{{Position}}",position); header.replaceText("{{Building}}",building); header.replaceText("{{phoneNumber}}", phoneNumber); header.replaceText("{{email}}", email); header.replaceText("{{Address}}", address); // 自定义各元素的字体、字号,可按需修改参数 const styleConfig = { firstName: {fontFamily: "微软雅黑", fontSize: 14}, lastName: {fontFamily: "微软雅黑", fontSize: 14}, position: {fontFamily: "宋体", fontSize: 12}, building: {fontFamily: "宋体", fontSize: 12}, phoneNumber: {fontFamily: "Arial", fontSize: 10}, email: {fontFamily: "Arial", fontSize: 10}, address: {fontFamily: "宋体", fontSize: 10} } // 为对应内容设置样式 let range = header.findText(firstName); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.firstName.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.firstName.fontSize); } range = header.findText(lastName); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.lastName.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.lastName.fontSize); } range = header.findText(position); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.position.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.position.fontSize); } range = header.findText(building); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.building.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.building.fontSize); } range = header.findText(phoneNumber); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.phoneNumber.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.phoneNumber.fontSize); } range = header.findText(email); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.email.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.email.fontSize); } range = header.findText(address); if (range) { let text = range.getElement().asText(); text.setFontFamily(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.address.fontFamily); text.setFontSize(range.getStartOffset(), range.getEndOffsetInclusive(), styleConfig.address.fontSize); } // 若仍需要同步修改正文内容,保留原有body替换代码即可 var body = doc.getBody(); body.replaceText("{{FirstName}}",firstName); body.replaceText("{{LastName}}",lastName); body.replaceText("{{Position}}",position); body.replaceText("{{Building}}",building); body.replaceText("{{phoneNumber}}", phoneNumber); body.replaceText("{{email}}", email); body.replaceText("{{Address}}", address); doc.saveAndClose(); }
注意事项
- 可自行修改
styleConfig内的字体家族名称和字号数值,所有Google Doc支持的字体都可以直接填写 - 如果设置了首页不同、奇偶页不同的页眉,需要对应调用
getFirstPageHeader()、getEvenPageHeader()分别处理对应页眉的内容和样式 - 如果模板页眉已经预设了部分格式,替换内容后默认会继承原有格式,上述代码会覆盖对应文本范围的字体和字号设置
内容的提问来源于stack exchange,提问作者ADavison
相关产品推荐
相关产品推荐

