Estoy tratando de dibujar gráficos fuera de la pantalla y transferirlos a Google Sheet. Pude hacerlo en la pantalla con toDataUrl() . Adjunté una captura de pantalla del trace de JSON para mostrar que los datos se devuelven correctamente.
Encontré el problema. trace.size se invierte. He corregido el error a continuación. El problema era que estaba tratando de dibujar fuera del lienzo. Tenga en cuenta que el canvas todavía está fuera de la pantalla pero dentro de la secuencia de comandos HTML de la barra lateral.
HTML
<script> function sheetsOnChange() { var sheet = document.getElementById("sheets").value; google.script.run.withSuccessHandler( function (trace) { try { alert(trace); trace = JSON.parse(trace); const canvas = document.createElement("canvas"); canvas.width = trace.size[1]; canvas.height = trace.size[0]; const ctx = canvas.getContext('2d'); ctx.beginPath(); ctx.moveTo(0,0); ctx.lineTo(canvas.width,canvas.height); ctx.stroke(); var url = canvas.toDataURL("image/png", 1.0); google.script.run.receiveDataURL(url); } catch(err) { alert(err); } } ).getTrace(sheet); } </script>Código.gs
function receiveDataURL(url) { try { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getActiveSheet(); sh.insertImage(url,1,1); } catch(err) { console.log(err); } }Rastro