![](/img/trans.png)
[英]Google App Script TypeError: Cannot read property “length” from undefined
[英]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.