Javascript Google脚本链接PDF错误:无法读取属性';名称值';未定义的
我试着写一个脚本,当你提交谷歌表单时,它会把一个pdf链接放到我的谷歌表单上。然而,似乎存在某种错误。我对谷歌表单一点经验都没有,所以我只是从一些YouTube视频中复制了它,并对它进行了一些调整 问题是: TypeError:无法读取未定义的属性“namedValues”(第27行, 文件“代码”) 有人能帮我理解这个错误的原因吗 这是图纸链接: 这是工作表: 您收到的错误消息表明您在FormSubmit(e)之后通过按编辑器UI中的“播放按钮”运行函数 这不是提交工作的方式Javascript Google脚本链接PDF错误:无法读取属性';名称值';未定义的,javascript,google-apps-script,Javascript,Google Apps Script,我试着写一个脚本,当你提交谷歌表单时,它会把一个pdf链接放到我的谷歌表单上。然而,似乎存在某种错误。我对谷歌表单一点经验都没有,所以我只是从一些YouTube视频中复制了它,并对它进行了一些调整 问题是: TypeError:无法读取未定义的属性“namedValues”(第27行, 文件“代码”) 有人能帮我理解这个错误的原因吗 这是图纸链接: 这是工作表: 您收到的错误消息表明您在FormSubmit(e)之后通过按编辑器UI中的“播放按钮”运行函数 这不是提交工作的方式 函数需要参
- 函数需要参数
()e
- 从文档中可以看出,事件对象(如
、namedValues
或range
)在表单提交的电子表格绑定脚本中可用values
- 要访问这些事件对象,需要将(可安装表单提交)触发器绑定到(表单提交)事件
- 为此,请按照-中的说明进行操作,具体取决于您使用的编辑器版本
- 创建一个新的
触发器,并将其绑定到函数表单提交
afterFormSubmit(e)
- 请勿尝试在FormSubmit(e)之后手动运行函数(如果这样做-事件对象
将为空,因为没有表单提交事件)e
- 当新表单提交发生时,触发器将自动触发函数
afterFormSubmit(e)
功能的?我认为在您的脚本中,当您使用脚本编辑器直接运行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;
}