我现在搜索了三天,无法找到将Google表格范围放入幻灯片的方法。
var range = SpreadsheetApp.getActive().getActiveSheet().getRange('A1:B3');
var slidesPage = SlidesApp.openById(presentationId).getSlides()[0];
slidesPage.insertTable(range);
似乎只能从另一张幻灯片中复制表格并将其粘贴到页面中。为什么无法将电子表格中的范围粘贴到幻灯片中?至少可以手动进行。
感谢您的帮助。
答案 0 :(得分:1)
不幸的是,电子表格的范围还不能直接放到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);
}
}