繁体   English   中英

TypeError:无法读取未定义的属性“0” - Google 应用脚本

[英]TypeError: Cannot read property '0' of undefined - Google app script

我有一个获取日期并保存它们的代码和一个数组,以便在另一个 function 中使用它来发出 POST 请求。 我在将这些日期传递给发布请求时遇到了挑战,并且不断收到错误无法读取未定义的属性“0”。 我会很感激这方面的帮助。

日期代码:

function getDate(){

 var dateArray = [];
 var date1= new Date(2021,2,15);
 var date2 = new Date(2021,3,15);

 Set the current date to the starting date 
 var date = date1; 
 
 while(date<=date2){

   dateArray.push(date);
   date.setDate(date.getDate()+1);
 }

 return(dateArray);
}


function user_assignments()
{
  var user = getUsers()

  var assign_arr = [];

  for (var i = 0; i < user.length; i++)
  {
    var url = 'https://api.10000ft.com/api/v1/users/' + user[i].ID + '/assignments?auth=' + tkft_token + '&from=' + start + '&to=' + end
    var response = UrlFetchApp.fetch(url, options);
    var info = JSON.parse(response);
    var content = info.data;


    if (content.length > 0)
    {
      for (var j = 0; j < content.length; j++)
      {
        var rec = {}
        rec.user_id = content[j].user_id
        rec.assignable_id = content[j].assignable_id
//        rec.ends_at = content[j].ends_at
        assign_arr.push(rec)

      }
    }


  }

  return assign_arr;
}

POST 请求代码:

function clear_demo(date)
{
var user_dt = user_assignments()
var usedates = getDate()

for (var i = 0; i < user_dt.length; i++)
  {

     var data = {

      'hours': 0,
      'date': usedates[i],//Having challenge here
      'user_id': user_dt[i].user_id,
      'assignable_id': user_dt[i].assignable_id,
    };
    var payload = JSON.stringify(data);
    var options = {
      'method': 'POST',
      'Content-Type': 'application/json',
      'payload': data,
    };

您正在为选项使用 object数据,而不是 JSON有效负载

    var payload = JSON.stringify(data);
    var options = {
      'method': 'POST',
      'Content-Type': 'application/json',
      'payload': payload, // was 'data'
    };

这还不是一个完整的答案,但会根据您的反馈进行编辑。 在此处发布此内容是因为评论的解释太长了。

我已经对您的代码进行了试验,并调整了这个小片段来测试usedates[i]是否有效。

function getDate() {
  var dateArray = [];
  var date1 = new Date(2021, 2, 15);
  var date2 = new Date(2021, 3, 15);

  var date = date1;

  while (date <= date2) {
    dateArray.push(date);
    date.setDate(date.getDate() + 1);
  }

  return dateArray;
}

function clear_demo(date) {
  var usedates = getDate();

  for (var i = 0; i < usedates.length; i++) {
    var data = {
      date: usedates[i]
    };
    console.log(JSON.stringify(data));
  }
}

clear_demo();

这可以正常工作,并在控制台上给出以下结果:

{"date":"2021-04-15T22:00:00.000Z"} 

这个相同的结果,32 次。

它相同的原因是每次你dateArray.push(date); 您只是在推送对同一日期 object 的引用。 您需要将其更改为dateArray.push(new Date(date.getTime())); .

然而,这不是你面临的问题。 您是说此代码返回错误TypeError: Cannot read property '0' of undefined on line date: usedates[i] - 但这并没有给我任何错误。 你确定它在这条线上失败了吗? 可能不是因为user_dt[i]由于某种原因失败了?

user_assignments()结束时assign_arr记录了什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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