繁体   English   中英

为什么我收到 TypeError:在 Google 表格上运行应用程序脚本时无法读取未定义的属性“1”?

[英]Why I'm getting TypeError: Cannot read property '1' of undefined while running an apps script on Google Sheets?

我一直试图在这里找到它的原因,但我不能。

基本上,它应该寻找包含 testNo 等于 1 的行赢得表单响应 1,并将它们设置为“是”......它确实这样做了,但它一直在日志中给我这个错误。

我认为因为 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');
      }
    }
  }
}

谢谢!

我相信你忘了设置一个条件来停止你的 for 循环:表达式 formRespValues.length 将导致 for 循环无限期地运行。

尝试以下操作:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM