不幸的是,Spreadsheet 的范围还不能直接放到 Slide 的表格中(至少现在是这样)。那么这个解决方法怎么样?该示例脚本的流程如下。
- 从电子表格中检索值。
- 通过检索值的行和列为幻灯片创建表格。
- 将值放入创建的表中。
示例脚本:
var values = SpreadsheetApp.getActive().getActiveSheet().getRange('A1:B3').getValues();
var slidesPage = SlidesApp.openById(presentationId).getSlides()[0];
var table = slidesPage.insertTable(rows, columns);
var rows = values.length;
var columns = values[0].length;
for (var r = 0; r < rows; r++) {
for (var c = 0; c < columns; c++) {
table.getCell(r, c).getText().setText(values[r][c]);
}
}
笔记 :
- 使用此脚本时,请准备好
presentationId
.
参考 :
如果这不是你想要的,我很抱歉。
编辑 :
在这个修改后的脚本中,添加了以下几点。
- 使用 检索电子表格的值
getDisplayValues()
。这样,可以复制格式。
- 我认为电子表格到幻灯片的手动副本似乎也可能是相同的情况。
- 复制单元格的背景。
- 复制单元格的字体粗细。
- 复制单元格的对齐方式。
修改后的脚本:
var range = SpreadsheetApp.getActive().getActiveSheet().getRange('A1:B3');
var values = range.getDisplayValues();
var horizontalAlignments = range.getHorizontalAlignments()
var backgrounds = range.getBackgrounds();
var fontWeights = range.getFontWeights();
var slidesPage = SlidesApp.openById(presentationId).getSlides()[0];
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]);
cell.getText().getTextStyle().setBold(fontWeights[r][c] == "bold" ? true : false);
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);
}
}
参考 :