Tengo un Script en Googlesheets que se supone que usa la hoja como una plantilla modificable (los colores y la fuente deben ser modificables), lo copia y lo pega como una Tabla en GoogleSlides. Copia cada celda una por una y luego la coloca en la celda de la tabla de diapositivas. Mi problema es que ahora solo puedo hacer que copie el texto y el color de fondo de cada celda, no fontFamily ni fontColor.
Esta es la parte relevante del código:
var slidesPage = SlidesApp.openById(slideID).getSlides()[slideBegin]; var rows = values.length; var columns = values[0].length; var table = slidesPage.insertTable(rows, columns); for (var r = 0; r < rows; r++) { for (var c = 0; c < columns; c++) { var cell = table.getCell(r, c); cell.getText().setText(values[r][c]); cell.getFill().setSolidFill(backgrounds[r][c]); var alignment; switch(horizontalAlignments[r][c]) { case "general-left": alignment = SlidesApp.ParagraphAlignment.START; break; case "general-right": alignment = SlidesApp.ParagraphAlignment.END; break; case "center": alignment = SlidesApp.ParagraphAlignment.CENTER; break; } //cell.getText().getParagraphStyle().setParagraphAlignment(alignment); } }Lo he intentado con .getAttributes o cosas así, pero no puedo encontrar cómo se supone que debe funcionar. Sé que probablemente tenga que establecer una "var" con los atributos y luego agregar algo como cell.getAttributes().setAttributes() pero no estoy seguro, estoy completamente atascado.
No sé nada sobre diapositivas, pero en la hoja de cálculo lo que quieres es getRichTextValue() y Class TextStyle
Puede obtener los atributos de un texto en una celda de esta manera:
function myFunction() { var ss = SpreadsheetApp.getActiveSheet(); var text = ss.getRange('a1').getRichTextValue() // .getRuns()[0]; var style = text.getTextStyle(); var size = style.getFontSize() var family = style.getFontFamily(); var color = style.getForegroundColor(); var bold = style.isBold(); var italic = style.isItalic(); // etc console.log(size, family, bold, italic, color); }Actualizar
https://developers.google.com/apps-script/reference/slides/text-range
Sorprendentemente, no veo ningún método set... en el objeto TextRange en Diapositivas, excepto setText(text) ! Existen los métodos get... pero son bastante inútiles si no puede aplicar estos atributos.
Parece que esta parte de la API de la aplicación Slides aún no está lista.