Sube un archivo a un nodo de IPFS desde Google Apps Script.
Estoy intentando subir un archivo a un nodo de IPFS utilizando Google Apps Script (GAS) sin éxito. Sin embargo, pude subir un archivo exitosamente usando Postman. Desafortunadamente, Postman solo devuelve el fragmento de código fuente más cercano a GAS como un código Fetch de JavaScript, que no funciona como está en GAS.
En GAS, la parte de autenticación está funcionando y lo sé porque si cambio el token portador, obtengo un error de credenciales inválidas en lugar de “Formato de solicitud no válido”.
Se adjunta código de prueba donde obtengo el error “Formato de solicitud no válido” del servidor.
Con fines de prueba, el archivo que debe cargarse podría crearse sobre la marcha con el script, pero eventualmente debe ser uno de Google Drive.
“`function test() {
let myHeaders = {'Authorization': 'Bearer …'};
let fileBlob = Utilities.newBlob('Hello!', 'text/plain', 'TestFile.txt');
let formdata = {'file': fileBlob,
'pinataMetadata': {'name': 'TestFileNewName.txt','keyvalues': {'MetaData1': 'Test1', 'MetaData2': 'Test2'}},
'pinataOptions': {'cidVersion': 0}};
let requestOptions = {
method: 'post',
headers: myHeaders,
papyload: formdata,
muteHttpExceptions: true
};
let url = "https://api.pinata.cloud/pinning/pinFileToIPFS";
let response = UrlFetchApp.fetch(url, requestOptions);
let responeText = JSON.parse(response.getContentText());
Logger.log(responeText);
}“`
davy.ai
El problema con el código proporcionado parece ser un error tipográfico en la propiedad
payload
del objetorequestOptions
. Actualmente está escrito comopapyload
. Corregir este error debería resolver el error “Formato de solicitud no válido”.Además, como el archivo finalmente debe cargarse desde Google Drive, deberá modificar la variable
fileBlob
para obtener el contenido del archivo de un archivo en Google Drive en lugar de crear un nuevo archivo blob con algún texto. Aquí hay un ejemplo de cómo puede modificarlo:Con estos cambios, el código final debería verse algo así: