[英]Why I'm getting TypeError: Cannot read property '1' of undefined while running an apps script on Google Sheets?
I've been trying to find where the cause of it here, but I just can't.我一直试图在这里找到它的原因,但我不能。
Basically, it should look for the row(s) win Form Responses 1 containing testNo equal to the one and set "Yes" to them... It does that, but it keeps giving me this error in the Logs.基本上,它应该寻找包含 testNo 等于 1 的行赢得表单响应 1,并将它们设置为“是”......它确实这样做了,但它一直在日志中给我这个错误。
I think that because the formRepValues may come with an array containing an empty element, it may be causing this error...?我认为因为 formRepValues 可能带有一个包含空元素的数组,它可能会导致这个错误......?
function sendEmail() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getActiveSheet();
const testSheet = ss.getSheetByName("Todays Tests v2");
const row = sheet.getActiveCell().getRow();
const col = sheet.getActiveCell().getColumn();
const emailSent = testSheet.getRange(row, 13, 1, 1).getValue();
const formRespSheet = ss.getSheetByName('Form Responses 1');
const formRespRng = formRespSheet.getRange(2, 13, formRespSheet.getLastRow() - 1, 2);
const formRespValues = formRespRng.getValues();
if (ss.getActiveSheet().getSheetName() == testSheet.getSheetName() &&
row > 5 &&
col == 14 &&
emailSent != 'Yes') {
const email = testSheet.getRange(row, 4).getValue();
const name = testSheet.getRange(row, 2).getValue();
const testNo = testSheet.getRange(row, 1).getValue();
for (var n = 0; formRespValues.length; n++) {
if (formRespValues[n][1] == testNo) {
formRespSheet.getRange('M' + (2 + n)).setValue('Yes');
}
}
}
}
Thank you!谢谢!
I believe you forgot to set a condition to stop your for loop: the expression formRespValues.length will cause the for loop to run indefinitely.我相信你忘了设置一个条件来停止你的 for 循环:表达式 formRespValues.length 将导致 for 循环无限期地运行。
Try the following:尝试以下操作:
for (var n = 0; n < formRespValues.length; n++) {
if (formRespValues[n][1] == testNo) {
formRespSheet.getRange('M' + (2 + n)).setValue('Yes');
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.