Logré usar un código similar a continuación para consultar GraphQL usando Google App Script. Sin embargo, no funciona cuando cambié para usar en mutación (código a continuación).
El código de error es 400 con texto: {"errores":[{"mensaje":"Las operaciones de GraphQL deben contener una query no vacía o una extensión de consulta persistedQuery .","extensiones":{"código":"INTERNAL_SERVER_ERROR"}}] }
Acabo de empezar a aprender Google App Script y Javascript, no estoy seguro de cómo resolver este problema después de buscar unas horas en la red. Un poco de ayuda sería apreciada. Gracias por adelantado.
function get_auth_headers(){ email = "test@mail.com" password ="test" var query = "mutation={ \ userLogin(input:{email:\"" + email + "\",password:\"" + password + "\"}){ \ token \ } \ }"; Logger.log(query) var url1 = "https://server.matters.news/graphql?"; url = encodeURI(url1 + query) Logger.log(url) var response = UrlFetchApp.fetch(url, {muteHttpExceptions: true }); Logger.log("code: " + response.getResponseCode()); Logger.log("text: " + response.getContentText()); var response = UrlFetchApp.fetch(url,{method: 'GET', headers: {'Content-Type': 'application/json'}}); var lists = JSON.parse((response.getContentText())); Logger.log(lists); }Logré obtener una respuesta de https://speckle.guide/dev/js-app-script.html Consulte el código a continuación para su referencia si tiene el mismo problema.
function get_auth_headers() { //email = "test@gmail.com" //password ="test" let url = "https://server.matters.news/graphql"; let graphql = JSON.stringify({ query: `mutation($input: UserLoginInput!) {userLogin(input: $input) {token}}`, variables: { input: { email: email, password: password, }, }, }); let params = { method: "POST", payload: graphql, headers: { "Content-Type": "application/json", Authorization: "Bearer YOUR_PERSONAL_TOKEN", }, }; var response = UrlFetchApp.fetch(url, params); var lists = JSON.parse((response.getContentText())); //Logger.log(lists['data']['userLogin']['token']); return lists['data']['userLogin']['token']; }