Google Script UrlFetchApp «метод»: «удалить» не работает - PullRequest
0 голосов
/ 24 февраля 2020

Я не использовал метод Delete в API раньше, но я пробовал его несколько раз, и это не влияет на удаление в системе через API.

Обратите внимание, что при этом не выдается ошибка делая это

Я не уверен, как go об этом, потому что я пробовал разные варианты кода и до сих пор не удаляю данные из системы. Если у кого-то есть идея, как использовать этот метод, пожалуйста, помогите.

Вот мой код.

    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)

        }
     }
    }
    }

Ответы [ 2 ]

2 голосов
/ 24 февраля 2020

Параметры delete_options вашего запроса могут не соответствовать ожидаемым.

Кроме того, согласно документации 10000 футов API , запрос 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'
        }
};
1 голос
/ 25 февраля 2020

Как насчет этой модификации?

От:

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=...' преобразован в Сценарий 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.

Ссылка:

Если это не помогло решить вашу проблему, прошу прощения.

...