No he usado el método Delete en la API antes, pero lo probé varias veces y no afecta la eliminación en el sistema a través de la API.

Tenga en cuenta que no se produce ningún error al hacer esto

No estoy seguro de cómo hacerlo, porque he probado diferentes variaciones del código y todavía no elimino los datos del sistema. Si alguien tiene una idea de cómo usar este método, amablemente ayúdelo.

Aquí está mi código.

    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)

        }
     }
    }
    }
0
Just 24 feb. 2020 a las 15:14

2 respuestas

La mejor respuesta

¿Qué tal esta modificación?

De:

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);

Para:

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);

O

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);

Nota:

  • Cuando el comando curl de muestra de curl -XDELETE 'https://vnext.10000ft.com/api/v1/users/<user_id>/assignments/<assignment_id>?auth=...' se convierte a Google Apps Script, se convierte en la modificación anterior.
  • En su secuencia de comandos, se utiliza assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH. Pero en el documento oficial, se utiliza assignments/<assignment_id>?auth=.... Entonces modifiqué como arriba. Pero por su comentario de respuesta, confirme I have tried this also on postman and works okay.. Entonces, si la modificación anterior no resolvió el problema, pruebe a modificar de assignments/<assignment_id>?auth=... a assignments/assignable_id='+ data.assignable_id+'&auth='+AUTH.

Referencia:

Si esto no resolvió su problema, me disculpo.

1
Tanaike 24 feb. 2020 a las 23:14

Los parámetros delete_options de su solicitud pueden no ser los esperados.

Además, de acuerdo con documentación de la API de 10,000 pies, la solicitud DELETE tiene este aspecto:

DELETE /api/v1/users/<user_id>/assignments/<assignment_id>

Por lo tanto, si necesita un token para la operación deseada, puede incluirlo en sus opciones, algo similar a esto:

var delete_options = {
        'method': 'delete',
        'contentType': 'application/json',
        'muteHttpExceptions': true,
        'headers': {
           'Authorization' : 'bearer'+TOKEN;
           'Accept' : 'application/json'
        }
};
2
ale13 24 feb. 2020 a las 14:34