【问题标题】:Cannot read property "0" from undefined无法从未定义中读取属性“0”
【发布时间】:2014-12-24 01:07:16
【问题描述】:

无法从未定义中读取属性“0”。

我找不到问题

function sendSurvey() {
  var recipient = Browser.inputBox("Send Survey", "Enter Recipient Email", Browser.Buttons.OK_CANCEL);
  if (recipient === 'cancel') return;

  var subject = 'Commuting Survey';

  var scriptUrl = ScriptApp.getService().getUrl();
  if (!scriptUrl) throw new Error( 'You must Deploy as Web App first.' );

  var template = HtmlService.createTemplateFromFile('emailTemplate');
  template.scriptUrl = scriptUrl;
  template.serialNumber = getGUID();  // Generate serial number for this response
  var html = template.evaluate().getContent();
  var plainText = 'Please complete this survey online at: ' + scriptUrl;
  html += '<p>Alternatively, you may <A href="' + scriptUrl + '"> complete this survey online.</A>';

  GmailApp.sendEmail(recipient, subject, plainText, {htmlBody:html} );

  Browser.msgBox("Survey Sent");
}


function doGet() {
  // Build survey body
  var template = HtmlService.createTemplateFromFile('emailTemplate');
  template.scriptUrl = ScriptApp.getService().getUrl();
  template.serialNumber = getGUID();  // Generate serial number for this response
  var app = template.evaluate();
  return app;
}

function doPost(e) {
  Logger.log(e);
  var ss = SpreadsheetApp.openById(_spreadsheetId);
  var sheet = ss.getSheets()[0];  // Assume first sheet collects responses
  var row = [
    new Date(),                     // Timestamp
    e.parameters.serial[0],         // Serial Number
    e.parameters.pytanie1[0],        // Pytanie 1
    e.parameters.pytanie2[0],        // Pytanie 2
  ];
  var lock = LockService.getPublicLock();
  // Wait for up to 30 seconds for other processes to finish.
  var locked = lock.tryLock(30000);

  if (locked) {
    var rowNum = sheet.getLastRow()+1;
    sheet.getRange(rowNum, 1, 1, row.length).setValues([row]);

    // Release the lock so that other processes can continue.
    lock.releaseLock();
    var result = "Response Recorded: \n  "+row.join('\n  ');
  }
  else {
    // Failed to get lock
    result = "System busy, please try again.";
  }

  // Report result of POST, in plain text
  return ContentService.createTextOutput(result)
                       .setMimeType(ContentService.MimeType.TEXT);
}

无法从未定义中读取属性“0”。

我找不到问题 无法从未定义中读取属性“0”。

我找不到问题 无法从未定义中读取属性“0”。

我找不到问题 无法从未定义中读取属性“0”。

我找不到问题

【问题讨论】:

  • 很抱歉听到这个消息。你有问题吗?
  • 你为什么重复这两个句子这么多次?
  • 打开浏览器的console,看看错误发生在哪一行。
  • 继续上面的评论,打开控制台,点击错误行号,设置断点。除此之外,在这个问题中添加 HTML 或者创建一个 jsfiddle 供我们查看。
  • 起初我不明白你遇到了什么错误;但是在看了四遍“我找不到问题Cannot read property "0" from undefined”之后,我终于明白了。

标签: javascript typeerror


【解决方案1】:

您有以下问题之一:

  • ss.getSheets 函数返回 undefined (阅读文档后我发现这是不可能的)
  • e.parameters 对象的以下属性之一不存在:
    • 序列
    • pytanie1
    • pytanie2

你可以添加一些console.log来看看哪个是不存在的属性...

【讨论】:

    【解决方案2】:

    尝试去掉e.parameters.pytanie2[0]

    之后的逗号(,)

    var 行 = [

    new Date(),                     // Timestamp
    e.parameters.serial[0],         // Serial Number
    e.parameters.pytanie1[0],        // Pytanie 1
    e.parameters.pytanie2[0]**,**        // Pytanie 2
    

    ];

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-20
      • 1970-01-01
      • 1970-01-01
      • 2016-12-04
      • 1970-01-01
      • 2015-10-06
      相关资源
      最近更新 更多