Javascript Google脚本链接PDF错误:无法读取属性';名称值';未定义的

Javascript Google脚本链接PDF错误:无法读取属性';名称值';未定义的,javascript,google-apps-script,Javascript,Google Apps Script,我试着写一个脚本,当你提交谷歌表单时,它会把一个pdf链接放到我的谷歌表单上。然而,似乎存在某种错误。我对谷歌表单一点经验都没有,所以我只是从一些YouTube视频中复制了它,并对它进行了一些调整 问题是: TypeError:无法读取未定义的属性“namedValues”(第27行, 文件“代码”) 有人能帮我理解这个错误的原因吗 这是图纸链接: 这是工作表: 您收到的错误消息表明您在FormSubmit(e)之后通过按编辑器UI中的“播放按钮”运行函数 这不是提交工作的方式 函数需要参

我试着写一个脚本,当你提交谷歌表单时,它会把一个pdf链接放到我的谷歌表单上。然而,似乎存在某种错误。我对谷歌表单一点经验都没有,所以我只是从一些YouTube视频中复制了它,并对它进行了一些调整

问题是:

TypeError:无法读取未定义的属性“namedValues”(第27行, 文件“代码”)

有人能帮我理解这个错误的原因吗

这是图纸链接:

这是工作表:

您收到的错误消息表明您在FormSubmit(e)之后通过按编辑器UI中的“播放按钮”运行函数 这不是提交工作的方式

  • 函数需要参数
    e
    ()
  • 从文档中可以看出,事件对象(如
    namedValues
    range
    values
    )在表单提交的电子表格绑定脚本中可用
  • 要访问这些事件对象,需要将(可安装表单提交)触发器绑定到(表单提交)事件
  • 为此,请按照-中的说明进行操作,具体取决于您使用的编辑器版本
  • 创建一个新的
    表单提交
    触发器,并将其绑定到函数
    afterFormSubmit(e)
  • 请勿尝试在FormSubmit(e)之后手动运行函数(如果这样做-事件对象
    e
    将为空,因为没有表单提交事件)
  • 当新表单提交发生时,触发器将自动触发函数
    afterFormSubmit(e)

所以在给出建议和答案后,我设置了一个触发器,将其绑定到afterFormSubmit(e)。但是我收到另一个错误,即TypeError:Cannot read属性'ยี่ห้อ / รุ่น' 未定义的(第46行,文件“代码”)(它是主体替换的一个)。这是否连接到我安装的触发器?我必须修复脚本吗?

您是如何在表单提交后运行
功能的?我认为在您的脚本中,当您使用脚本编辑器直接运行
afterFormsubmit
函数时,会发生这样的错误。所以我很担心这件事。我把它作为afterFormsubmit运行。那么我应该如何运行它呢?谢谢您的回复。我不得不为我糟糕的英语水平道歉。不幸的是,在
中,我将其作为afterFormsubmit运行。那么,我应该如何运行它呢?
,我无法理解您的情况。我以afterFormSubmit的方式运行该函数,它遇到了上述问题。我应该把这个函数当作别的东西来运行。谢谢你的回复。不幸的是,我无法理解从
执行脚本的方法,我以afterFormSubmit运行函数。我为我糟糕的英语水平道歉。我可以问一下它的细节吗?谢谢你的回答,你有关于如何创建新表单提交并将其绑定到函数的说明吗?你有没有创建新表单提交触发器的说明?或者将表单作为目标绑定到电子表格中?我启动了触发器,但在正文中出现了另一个错误。ReplaceText根据Stackoverflow指南,这可能最好作为一个新问题提出,以便您可以获得更好的帮助。另外-出于文档目的,如果可以,请接受答案(✓) 这对你很有帮助-它也帮助将来有相同问题的其他人找到解决方案。看起来info对象中缺少一些被调用的属性。不完全是解决方案,只是尝试捕捉错误。尝试将每一行
正文。替换…;
放入
try{
}cathc(e)
。像这样:
试试{body.replaceText(“{name}”),info['ชื่อพนักงานขับรถ'][0])}捕获(e){};
function afterFormsubmit(e) {
  const info = e.namedValues ;
  const pdfFile = createPDF(info);
  const entryRow = e.range.getRow();
  const ws = SpreadsheetApp.getActiveSpreadsheet.getSheetByName('Electric Forklift Incentive');
   ws.getRange(entryRow, 40).setValue(pdfFile.getUrl()); 
 }


 function createPDF(info) {

  const pdfFolder = DriveApp.getFolderById("1nYJkXEp6EgrCS3Z0rL1_hpVXh8Kunsa6");
  const tempFolder = DriveApp.getFolderById("1wHODapt8dd9XzK5IpfmdGuzNHrlr4IZt");
  const templateDoc = DriveApp.getFolderById("10qY2CgDNmMG_GnJGc2MeNvog19Mdnh4Ky68_vHkwScE");
  
  const newTemplateFile = templateDoc.makeCopy(tempFolder);
  
  const openDoc = DocumentApp.openById(newTemplateFile.getID());
  const body= openDoc.getBody();
    body.replaceText("{name}", info['ชื่อพนักงานขับรถ'][0]);
    body.replaceText("{brand}", info['ยี่ห้อ / รุ่น'][0]);
    body.replaceText("{dp}", info['หน่วยงาน'][0]);
    body.replaceText("{num}", info['หมายเลขรถ'][0]);
    body.replaceText("{met}", info['เลขมิเตอร์'][0]);
    body.replaceText("{po1}", info['หัวข้อพิจารณา [ 1. ระดับน้ำกลั่นในเเบตเตอรี่ (ยกเว้น BYD)]'][0]);
    body.replaceText("{po2}", info['หัวข้อพิจารณา [ 2. ระดับน้ำมันไฮดรอลิคและการรั่วซึม]'][0]);
    body.replaceText("{po3}", info['หัวข้อพิจารณา [ 3. ระดับน้ำมันเกียร์]'][0]);
    body.replaceText("{po4}", info['หัวข้อพิจารณา [ 4. ระดับน้ำมันเบรค]'][0]);
    body.replaceText("{po5}", info['หัวข้อพิจารณา [ 5. การทำงานของเบรคมือ]'][0]);
    body.replaceText("{po6}", info['หัวข้อพิจารณา [ 6. การทำงานของเบรค]'][0]);
    body.replaceText("{po7}", info['หัวข้อพิจารณา [ 7. ระบบเสียงสัญญาณแตร]'][0]);
    body.replaceText("{po8}", info['หัวข้อพิจารณา [ 8. ระบบไฟฟ้าแสงสว่างและสัญญาณไฟ]'][0]);
    body.replaceText("{po9}", info['หัวข้อพิจารณา [ 9. สภาพงาเเละการทำงานของงา]'][0]);
    body.replaceText("{po10}", info['หัวข้อพิจารณา [10. ระบบะสัญญาณไฟกระพริบหลังคา]'][0]);
    body.replaceText("{po11}", info['หัวข้อพิจารณา [11. ระบบสัญญาณเสียงขณะถอยรถ]'][0]);
    body.replaceText("{po12}", info['หัวข้อพิจารณา [12. ความสะอาดของตัวรถ]'][0]);
    body.replaceText("{po13}", info['หัวข้อพิจารณา [13. สภาพของตัวรถ]'][0]);
    body.replaceText("{po14}", info['หัวข้อพิจารณา [14. ความสะอาดเครื่องยนต์เเละห้องเครื่อง]'][0]);
    body.replaceText("{po15}", info['หัวข้อพิจารณา [15. สภาพเบาะนั่ง]'][0]);
    body.replaceText("{po16}", info['หัวข้อพิจารณา [16. สภาพของล้อ / น็อตกะทะล้อ]'][0]);
    body.replaceText("{po17}", info['หัวข้อพิจารณา [17. สภาพรอกโซ่และลูกกลิ้งแผงงา]'][0]);
    body.replaceText("{po18}", info['หัวข้อพิจารณา [18. ความเรียบร้อยของป้ายชื่อผู้ขับ]'][0]);
    body.replaceText("{po19}", info['หัวข้อพิจารณา [19. รายงานการตรวจสภาพรถยกประจำวัน]'][0]);
    body.replaceText("{po20}", info['หัวข้อพิจารณา [20. การตรวจสอบถังดับเพลิง]'][0]);
    body.replaceText("{add}", info['หมายเหตุ'][0]);
    body.replaceText("{request}", info['พบข้อเรียกร้อง'][0]);
    body.replaceText("{reqwhere}", info['จากช่องทาง '][0]);
    body.replaceText("{stat}", info['สถิติการมาปฏิบัติงาน'][0]);
    body.replaceText("{acci}", info['สถิติอุบัติเหตุประจำเดือน'][0]);
    body.replaceText("{acdate}", info['วันที่เกิดเหตุ'][0]);
    body.replaceText("{reason}", info['สาเหตุ'][0]);
    body.replaceText("{accip}", info['อุบัติเหตุที่พบ'][0]);
   
   openDoc.saveAndClose();
  
  
  const blobPDF = newTemplateFile.getAs(Mimetype.pdf);
  const pdfFile = pdfFolder.createFile(blobPDF).setName(info['ชื่อพนักงานขับรถ'][0]+ " " + ['หน่วยงาน'][0] + " " + ['หมายเลขรถ'][0]); 
  tempFolder.removeFile(newTemplateFile) ;    
   
   return pdfFile;

  
  }