Tengo una API extremadamente básica hecha en scripts de Google, que he vinculado a una hoja de cálculo. Originalmente lo hice en mi cuenta de Google de casa y todo funcionaba bien, no tuve errores, lo hice en mi PC en casa y no encontré ningún error, pero cuando lo probé en mi computadora portátil no pude acceder. El problema fue que lo hice en la cuenta de Google de mi casa, pero mi cuenta de correo electrónico de la escuela se creó para que no pudiera acceder a los archivos ni a nada fuera de mi sistema escolar, así que simplemente copié y pegué todo mi código en un script de Google en mi cuenta de la escuela y Hice lo mismo para la hoja de cálculo que para un proyecto escolar. Cuando acabo de ingresar el enlace api como de costumbre, funciona bien, sin embargo, ahora, cada vez que realizo una consulta, Google devuelve "400. Eso es un error. Su cliente ha emitido una solicitud incorrecta o ilegal. Eso es todo lo que sabemos". Esto no fue un problema antes en la API que hice en el correo electrónico de mi casa, y todo lo que hice fue copiar y pegar el código, nada cambió, aquí está el código.
function doGet(request){ var query = request.parameter.q var parameters = 6; var sheetname = "Sheet1"; var doc = SpreadsheetApp.openById(PropertiesService.getScriptProperties().getProperty('key')); var sheet = doc.getSheetByName(sheetname) var lastrow = sheet.getLastRow(); var rows = []; var range = sheet.getRange(2,1,lastrow,parameters); var values = range.getValues(); var data var data_return for(var row in values){ rows.push([]); for(var col in values[row]){ rows[row].push(values[row][col]); } } if(query != null){ if(query.includes('data[')){ data = query.replace("data[", ""); data = data.replace("]", "") data_return = "data sent: " + data SpreadsheetApp.getActiveSheet().getRange('A17').setValue(data); return ContentService.createTextOutput(JSON.stringify({data_return})).setMimeType(ContentService.MimeType.JSON); } else{ var rowstoreturn = rows.filter(a => a[0] == query) return ContentService.createTextOutput(JSON.stringify({rowstoreturn})).setMimeType(ContentService.MimeType.JSON); }} return ContentService.createTextOutput(JSON.stringify({rows})).setMimeType(ContentService.MimeType.JSON); } function setup() { var doc = SpreadsheetApp.getActiveSpreadsheet(); PropertiesService.getScriptProperties().setProperty("key", doc.getId()); }
El enlace a la API que configuré con el correo electrónico de mi casa es https://script.google.com/macros/s/AKfycbwvPPynR9FAkUgMejjtQE9Rqo0ayaJPbmFoaaomkjeZobgJN_x3smasjHdeSfOTkvMO/exec
Enviaría el enlace que también hice en la cuenta de mi escuela, pero no puedo, ya que solo puedo hacer que los archivos sean accesibles para las personas en mi sistema escolar. Para hacer una consulta, es como una API normal justo después de EXEC, simplemente colocas ?q= y luego la consulta que quieras. Parece que no puedo encontrar el problema, ¿hay alguna solución para esto? ¡Gracias! Si hay algo más que deba proporcionar, por favor hágamelo saber.