Digamos que desea copiar un CSV como este:
foo,1,"asdf" bar,2,"fdsa" baz,3,"helloworld"
Lo copia con CMD+C/CTRL+C, luego va a Hojas de cálculo de Google y presiona CMD+V/CTRL+V, y termina con una celda que contiene todo el contenido. No es lo que esperaba...
¿Cómo puede formatearlo usando JavaScript y el portapapeles para que pegue cada fila/celda en el lugar adecuado en la hoja de cálculo? Tengo esto para hacer la copia al portapapeles en JavaScript:
const textarea = document.createElement('textarea') textarea.style.opacity = 0 textarea.style.width = 0 textarea.style.height = 0 textarea.style.position = 'absolute' textarea.style.bottom = '-100%' textarea.style.left = '-100%' textarea.style.margin = 0 document.body.appendChild(textarea) const copy = function(text){ textarea.value = text textarea.select() document.execCommand('copy') } document.addEventListener('click', () => { copy( `foo,1,"asdf" bar,2,"fdsa" baz,3,"helloworld"` ) }
¿Cómo formatearlo para que la hoja de cálculo en Google Spreadsheets lo formatee como filas y columnas correctamente?
Reemplace la coma con tabulaciones y debería funcionar. Este es un comportamiento estándar en las hojas y también en Excel.
var values = [ [ // Cell values ... ], // Additional rows ... ]; var body = { values: values }; gapi.client.sheets.spreadsheets.values.update({ spreadsheetId: spreadsheetId, range: range, valueInputOption: valueInputOption, resource: body }).then((response) => { var result = response.result; console.log(`${result.updatedCells} cells updated.`); });
Este es un método proporcionado por Google Sheets Api y se modifica según sus necesidades. Aquí hay un enlace https://developers.google.com/sheets/api/guides/values#javascript_1