如何使用 Apps 脚本将 Google 表格内容粘贴到 Google 幻灯片中?

How to paste Google Sheets Content into a Google Slide using Apps Script?

我现在搜索了三天,但找不到将 Google 工作表范围放入幻灯片的方法。

var range = SpreadsheetApp.getActive().getActiveSheet().getRange('A1:B3');

var slidesPage = SlidesApp.openById(presentationId).getSlides()[0];

slidesPage.insertTable(range);

似乎只能从另一张幻灯片复制 table 并粘贴到页面中。为什么无法将电子表格中的范围粘贴到幻灯片中?至少手动是可以的。

感谢您的帮助。

不幸的是,Spreadsheet 的范围还不能直接放到 Slide 的 table 中(至少现在是这样)。那么这个解决方法怎么样?此示例脚本的流程如下。

  1. 从电子表格中检索值。
  2. 根据检索到的值的行和列创建 table 幻灯片。
  3. 将值添加到创建的 table。

示例脚本:

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() 检索电子表格的值。这样,可以复制格式。
    • 我想好像手动copy Spreadsheet to Slide也可能是同样的情况
  • 复制单元格背景。
  • 复制单元格的字体粗细。
  • 复制单元格排列。

修改脚本:

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);
  }
}

参考资料: