Form的App脚本不能准确替换模板中的字段

问题描述 投票:1回答:1

我有一个简单的脚本,可以在提交表单时生成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"));}

我的模板-Template with double curly bracket

结果-Red boxed are wrongly replaced fields - randomized

问题-这是否意味着第3行中的数组声明应该与表单响应列的顺序匹配?

javascript google-apps-script google-docs google-form appscript
1个回答
0
投票

您可以使用常规表达式:

body.replace(/{{Company Name}}/g, companyName); // /g replace globaly all value like  {{Company Name}}
© www.soinside.com 2019 - 2024. All rights reserved.