我使用下面的代码从电子表格自动填充一个标准的谷歌文档,它只工作了一半。它运行良好,从我创建的模板创建一个新的谷歌文档,我正确地命名这个并将链接插入到原始电子表格中以便于参考。问题是它似乎没有填写我要求它填写的任何数据(只是保留模板信息).我已经检查了我的标题和列号,它似乎都是正确的...
代码为:
function onOpen() {
const ui = SpreadsheetApp.getUi();
const menu = ui.createMenu('AutoFill Docs');
menu.addItem('Create New Docs', 'createNewGoogleDocs')
menu.addToUi();
}
function createNewGoogleDocs() {
const googleDocTemplate = DriveApp.getFileById('1ONJpemIqAwfTuEnRhkeoVnqVnfnWVexG_RnmzsP96FQ');
const destinationFolder = DriveApp.getFolderById('19OwE5z9AnJ0nzEvU-lJ0tNTw3yJM2BHH')
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Form responses 1')
const rows = sheet.getDataRange().getValues();
rows.forEach(function(row, index){
if (index === 0) return;
if (row[6]) return;
const copy = googleDocTemplate.makeCopy(`${row[0]} Student Details` , destinationFolder)
const doc = DocumentApp.openById(copy.getId())
const body = doc.getBody();
const friendlyDate = new Date(row[3]).toLocaleDateString();
body.replaceText('{{What is your full name?}}', row[0]);
body.replaceText('{{What are your personal pronouns?}}', row[1]);
body.replaceText('{{What is your personal email address?}}', row[2]);
body.replaceText('{{What is your school student email?}}', row[3]);
body.replaceText('{{What is your mobile phone number?}}', row[4]);
body.replaceText('{{Do you have anything that you would like us or your tutor to know?}}', row[5]);
doc.saveAndClose();
const url = doc.getUrl();
sheet.getRange(index + 1, 7).setValue(url)
})
}
Google Doc模板正在填充以下内容:
学生编号详细信息:
学生姓名:你的全名是什么?你的个人代词是什么?
学生邮箱1:你的个人电子邮件地址是什么?
学生邮箱2:“你的学生邮箱是什么?”
学生电话号码:你的移动的号码是多少?
主题:填充
您的学生的评论/请求:你有什么想让我们或你的导师知道的吗?
它从中收集数据的电子表格具有以下列标题(A-G):
你的全名是什么?
你的人称代词是什么?
你的个人电子邮件地址是什么?
D:你们学校的学生邮箱是什么?
E:你的移动的号码是多少?
你有什么想让我们或你的导师知道的吗?
G:文档链接
你知道我错在哪里吗?
1条答案
按热度按时间63lcw9qa1#
?
在Regex中被视为“特殊字符”。另一种方法是沿着How to ensure that words in a Google Documents will be replaced correctly using Google Apps Script中提到的方法来对特殊字符
escape
进行处理,但这需要用户深入研究正则表达式,而这并不是每个人都喜欢的。有一个更简单的解决方案: