Tengo un comando en cURL que me permite ejecutar un script de Google Apps:
curl -X POST \ -H 'Authorization: Bearer ### access token ###' \ -H "Content-Type: application/json" \ -d '{"function": "##function name##", "parameters": ["##MainDocID##", ["##Doc1ID##","##Doc2ID##","##Doc3ID##"]], devMode: false}' \ "https://script.googleapis.com/v1/scripts/### script ID ###:run"Este script llama a una función que se encarga de crear una carpeta en Google Drive y copiar en la carpeta un archivo de hoja editado y modificado con ciertos valores. El script funciona perfectamente si lo ejecuto desde la terminal.
Estoy creando una aplicación web y quiero incluir este script en un botón que, cuando se hace clic, activa la función Apps Script. Para hacer esto, quiero convertir este comando cURL a javascript. He usado este convertidor ( REQBIN ) y obtuve este código, pero no importa cuántas veces lo ejecute, no funciona correctamente.
Código javascript convertido:
var url = "https://script.googleapis.com/v1/scripts/### script ID ###:run"; var xhr = new XMLHttpRequest(); xhr.open("POST", url); xhr.setRequestHeader("Authorization", "Bearer ### access token ###"); xhr.setRequestHeader("Content-Type", "application/json"); xhr.onreadystatechange = function () { if (xhr.readyState === 4) { console.log(xhr.status); console.log(xhr.responseText); }}; var data = '{"function": "##function name##", "parameters": ["##MainDocID##", ["##Doc1ID##","##Doc2ID##","##Doc3ID##"]], devMode: false}'; xhr.send(data);Después de crear el botón y agregar el código javascript, he probado si funciona pero no funciona porque reviso en Google Drive y no se ha creado la carpeta y no se ha copiado el archivo que edito. No he podido averiguar el error exacto. Desde el navegador web (lado del cliente) obtengo el código de respuesta '200' y en Google Cloud (operaciones de registro), no obtengo nada, pero lo único seguro es que la función no se ha ejecutado.
¿Por qué no funciona?. ¿Es correcto el código javascript?. ¿Alguien podría ayudarme, por favor?.
Muchas gracias Wardiam