我有一个简单的脚本,可以在提交表单时生成doc和PDF。它在简单的模板上效果很好(例如,只有1个句子,名字,姓氏和公司名称)。
但是,当我使用更长,具有很多字段和格式的模板时,代码会运行,但会随机替换文本。
我已经尝试将升序的字段硬编码为doc模板。但是它仍然随机替换文本
有人可以指出我做错了什么吗?
我的代码:
function myFunction(e) {
var response = e.response;
var timestamp = response.getTimestamp();
var [companyName, country, totalEmployees,totalPctWomenEmployees,numberNationality,name1,position1,emailAdd1,linkedin1,funFact1,name2,position2,emailAdd2,linkedin2,gameStage,gameStory] = response.getItemResponses().map(function(f) {return f.getResponse()});
var file = DriveApp.getFileById('XXXXX');
var folder = DriveApp.getFolderById('XXXXX')
var copy = file.makeCopy(companyName + '_one pager', folder);
var doc = DocumentApp.openById(copy.getId());
var body = doc.getBody();
body.replaceText('{{Company Name}}', companyName);
body.replaceText('{{Name}}', name1);
body.replaceText('{{Position}}', position1);
body.replaceText('{{Email}}', emailAdd1);
body.replaceText('{{Linkedin}}', linkedin1);
body.replaceText('{{Fun Fact}}', funFact1);
body.replaceText('{{Game Stage}}', gameStage);
body.replaceText('{{Game Story}}', gameStory);
doc.saveAndClose();
folder.createFile(doc.getAs("application/pdf"));}
问题-这是否意味着第3行中的数组声明应该与表单响应列的顺序匹配?
您可以使用常规表达式:
body.replace(/{{Company Name}}/g, companyName); // /g replace globaly all value like {{Company Name}}