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();
参考:
我 运行 在尝试将我的数据表(使用图表服务)插入 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();