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 documentationDELETE 请求如下所示:

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.

参考:

如果这不能解决您的问题,我深表歉意。