Google Apps 脚本:将数据 Table 插入 Google 幻灯片

Google Apps Script: Insert Data Table into Google Slide

我 运行 在尝试将我的数据表(使用图表服务)插入 Google 幻灯片时遇到了问题。

当我尝试获取图表的 Blob,或将图表获取为 'image/png' 或 jpeg 等时出现问题

代码如下:

function TablesConstructor(slide_obj){
  //slide_obj is an object that contains all the information needed.
  //Let's open the file
  var slide_file = SlidesApp.openById(slide_obj.slide_id);
  
  //Get the Slides
  var slides = slide_file.getSlides();
  var slides_num = slides.length;
  
  //Get the Slide N-1, and it's images
  var slide_images = slides[slides_num - 2].getImages();
 
  var slide_image_1 = slide_images[0];
    
  //Create Data Table chart
  var table_data = Charts.newDataTable()
  .addColumn(Charts.ColumnType.NUMBER, "Col1")
  .addColumn(Charts.ColumnType.NUMBER, "Col2")
  .addColumn(Charts.ColumnType.NUMBER, "Col3")
  .addColumn(Charts.ColumnType.NUMBER, "Col4")
  
  //Populate data table chart with the 2D array inside my object
  var rows = slide_obj.eem_table_data.length <= 10 ? slide_obj.eem_table_data.length : 10;

  for(var i = 0; i < rows; i++){
    table_data.addRow([slide_obj.eem_table_data[i][0],
    slide_obj.eem_table_data[i][1], 
    slide_obj.eem_table_data[i][2], 
    slide_obj.eem_table_data[i][3], 
    );
  }

  //Build the table
  var table_chart = Charts.newTableChart().setDataTable(table_data).build();
  
  //ATTEMPT 1
  //Get the chart Blob and replace the image with the blob
  var image_blob = table_chart.getBlob();
  slide_image_1.replace(image_blob, true);
 
  slide_file.saveAndClose();  
}

我还采用了其他一些方法,不幸的是它们也没有用

  //ATTEMPT 2
  //Set the ContentType to jpeg
  var table_jpeg = table_chart.getBlob().setContentType('image/jpeg')
  slide_image_1.replace(table_jpeg, true);
  
  //ATTEMP 3
  //Replace a Shape with the table chart
  slide_elements.forEach(function(pageElement){
    Logger.log(pageElement.getPageElementType());
    if(pageElement.asShape().getShapeType() !== "UNSUPPORTED"){
      if (pageElement.asShape().getShapeType() == "RECTANGLE"){
        pageElement.asShape().replaceWithImage(table_chart.getAs('image/jpeg'));
      }
    }
  });

我的幻灯片(条形图)中有其他类型的图表,它们工作得很好,但对于这个特定的图表,我收到的错误消息是:

Exception: We're sorry, a server error occurred. Please wait a bit and try again.

这个,上线

var image_blob = table_chart.getBlob();

用这个答案解决了它:

Google Script: how to send Tablechart in e-mail?

需要使用 setDimensions().

声明图表的大小

根据你的提议,我发布了这个。在这种情况下,请使用 setDimensions 设置尺寸,如下所示。

发件人:

var table_chart = Charts.newTableChart().setDataTable(table_data).build();

收件人:

var table_chart = Charts.newTableChart().setDataTable(table_data).setDimensions(640, 480).build();

参考: