Google 脚本 UrlFetchApp“方法”:“删除”不起作用
Google Script UrlFetchApp “method” : “delete” not working
之前API中的删除方法我没有用过,但是试了几次都不影响通过API在系统上删除。
请注意,执行此操作时不会抛出任何错误
我不确定该怎么做,因为我尝试了不同的代码变体,但仍然没有从系统中删除数据。如果有人知道如何使用此方法,请提供帮助。
这是我的代码。
for (var i = 0; i<range.length; i++) {
if(range[i][0] == searchString) {
var lastRow = sheet.getRange(2+i,1,1,11).getValues();
//var user_id = sheet.getRange("I2:I" + sheet.getLastRow()).getValues();
var data ={
'hours_per_day':lastRow[0][6],
'starts_at':lastRow[0][7],
'ends_at': lastRow[0][7],
'user_id': lastRow[0][8],
'assignable_id':lastRow[0][9],
}
var delete_options = {
'method': 'DELETE',
'Content-Type': 'application/json',
};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
if (response.getResponseCode() === 200) {
var json = JSON.parse(response);
sheet.getRange(2+i, 11).setValue('Pass');
}
else {
sheet.getRange(2+i, 11).setValue('Fail');
Logger.log(data)
}
}
}
}
您请求的 delete_options
参数可能不是预期的参数。
此外,根据 10,000 ft API documentation,DELETE
请求如下所示:
DELETE /api/v1/users/<user_id>/assignments/<assignment_id>
因此,如果您有所需操作所需的令牌,则可以将其包含在您的选项中,类似于以下内容:
var delete_options = {
'method': 'delete',
'contentType': 'application/json',
'muteHttpExceptions': true,
'headers': {
'Authorization' : 'bearer'+TOKEN;
'Accept' : 'application/json'
}
};
这个修改怎么样?
发件人:
var delete_options = {
'method': 'DELETE',
'Content-Type': 'application/json',
};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
收件人:
var delete_options = {method: 'DELETE'};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/'+ data.assignable_id + '?auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
或
var delete_options = {method: 'DELETE'};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/' + data.assignable_id + '?auth='+encodeURIComponent(AUTH);
var response = UrlFetchApp.fetch(url, delete_options);
注:
- 当
curl -XDELETE 'https://vnext.10000ft.com/api/v1/users/<user_id>/assignments/<assignment_id>?auth=...'
的示例 curl 命令转换为 Google Apps 脚本时,它变成上述修改。
- 在您的脚本中,使用了
assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH
。但是在官方文档中,使用了assignments/<assignment_id>?auth=...
。所以我像上面那样修改了。但是从你的回复评论中,我确认了I have tried this also on postman and works okay.
。所以如果以上修改没有解决问题,请测试从assignments/<assignment_id>?auth=...
修改为assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH
.
参考:
如果这不能解决您的问题,我深表歉意。
之前API中的删除方法我没有用过,但是试了几次都不影响通过API在系统上删除。
请注意,执行此操作时不会抛出任何错误
我不确定该怎么做,因为我尝试了不同的代码变体,但仍然没有从系统中删除数据。如果有人知道如何使用此方法,请提供帮助。
这是我的代码。
for (var i = 0; i<range.length; i++) {
if(range[i][0] == searchString) {
var lastRow = sheet.getRange(2+i,1,1,11).getValues();
//var user_id = sheet.getRange("I2:I" + sheet.getLastRow()).getValues();
var data ={
'hours_per_day':lastRow[0][6],
'starts_at':lastRow[0][7],
'ends_at': lastRow[0][7],
'user_id': lastRow[0][8],
'assignable_id':lastRow[0][9],
}
var delete_options = {
'method': 'DELETE',
'Content-Type': 'application/json',
};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
if (response.getResponseCode() === 200) {
var json = JSON.parse(response);
sheet.getRange(2+i, 11).setValue('Pass');
}
else {
sheet.getRange(2+i, 11).setValue('Fail');
Logger.log(data)
}
}
}
}
您请求的 delete_options
参数可能不是预期的参数。
此外,根据 10,000 ft API documentation,DELETE
请求如下所示:
DELETE /api/v1/users/<user_id>/assignments/<assignment_id>
因此,如果您有所需操作所需的令牌,则可以将其包含在您的选项中,类似于以下内容:
var delete_options = {
'method': 'delete',
'contentType': 'application/json',
'muteHttpExceptions': true,
'headers': {
'Authorization' : 'bearer'+TOKEN;
'Accept' : 'application/json'
}
};
这个修改怎么样?
发件人:
var delete_options = {
'method': 'DELETE',
'Content-Type': 'application/json',
};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
收件人:
var delete_options = {method: 'DELETE'};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/'+ data.assignable_id + '?auth='+AUTH;
var response = UrlFetchApp.fetch(url, delete_options);
或
var delete_options = {method: 'DELETE'};
var url = 'https://api.10000ft.com/api/v1/users/'+data.user_id+'/assignments/' + data.assignable_id + '?auth='+encodeURIComponent(AUTH);
var response = UrlFetchApp.fetch(url, delete_options);
注:
- 当
curl -XDELETE 'https://vnext.10000ft.com/api/v1/users/<user_id>/assignments/<assignment_id>?auth=...'
的示例 curl 命令转换为 Google Apps 脚本时,它变成上述修改。 - 在您的脚本中,使用了
assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH
。但是在官方文档中,使用了assignments/<assignment_id>?auth=...
。所以我像上面那样修改了。但是从你的回复评论中,我确认了I have tried this also on postman and works okay.
。所以如果以上修改没有解决问题,请测试从assignments/<assignment_id>?auth=...
修改为assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH
.
参考:
如果这不能解决您的问题,我深表歉意。