如何将电子表格中的范围作为图像复制到 Google 幻灯片?
How to copy a range from a spreadsheet as an image to Google Slides?
我正在尝试将特定 Google 电子表格的一系列单元格作为图像复制到 Google 幻灯片上。但我几乎找不到有用的代码。这是我想出的,但我仍然无法将单元格范围转移到 image/png.
目标:将刚刚存储在变量中的图像插入到特定的幻灯片中!
非常感谢任何帮助。谢谢。
function add_WSA(){
//Opening the Spreadsheet
var ss = SpreadsheetApp.openById("insertSpreadsheetID");
var range = ss.getRange("example!A1:F20");//in A1 Notation
//Conversion into an png image
var image = range.getAs('image/png');
//Opening the specific Slide (Nr. 3)
var slide = SlidesApp.openById("mySlidesID").getSlides()[2];
//Insertion of image
slide.insertImage(image);
}
Error: TypeError: range.getAs is not a function
at add_WSA(report:5:21)
PS:我对社区和 JavaScript 来说都是新手。请耐心等待。非常感谢对更精简或更有效的问题解决方案提供的所有其他帮助。谢谢。
这个答案怎么样?
问题和解决方法:
遗憾的是,在现阶段,范围对象无法直接转换为PNG格式。所以在这种情况下,需要使用变通方法。在这个答案中,作为解决方法,我想建议使用 Charts Service。使用 Charts Service 时,Spreadsheet 的范围可以转换为图像 blob。
示例脚本:
function add_WSA(){
//Opening the Spreadsheet
var ss = SpreadsheetApp.openById("insertSpreadsheetID");
var range = ss.getRange("example!A1:F20");//in A1 Notation
//Conversion into an png image
// I modified below script.
const [header, ...values] = range.getDisplayValues();
const table = Charts.newDataTable();
header.forEach(e => table.addColumn(Charts.ColumnType.STRING, e));
values.forEach(e => table.addRow(e));
const image = Charts.newTableChart().setDataTable(table.build()).setDimensions(500, 500).setOption('alternatingRowStyle', false).build().getBlob();
//Opening the specific Slide (Nr. 3)
var slide = SlidesApp.openById("mySlidesID").getSlides()[2];
//Insertion of image
slide.insertImage(image);
}
结果:
当上述脚本为运行时,可得到如下示例结果
注:
- 请在启用 V8 的情况下使用此脚本。
- 在这种情况下,例如,当您要更改字体颜色时,请在每个单元格值中使用 HTML 代码。
参考:
我正在尝试将特定 Google 电子表格的一系列单元格作为图像复制到 Google 幻灯片上。但我几乎找不到有用的代码。这是我想出的,但我仍然无法将单元格范围转移到 image/png.
目标:将刚刚存储在变量中的图像插入到特定的幻灯片中!
非常感谢任何帮助。谢谢。
function add_WSA(){
//Opening the Spreadsheet
var ss = SpreadsheetApp.openById("insertSpreadsheetID");
var range = ss.getRange("example!A1:F20");//in A1 Notation
//Conversion into an png image
var image = range.getAs('image/png');
//Opening the specific Slide (Nr. 3)
var slide = SlidesApp.openById("mySlidesID").getSlides()[2];
//Insertion of image
slide.insertImage(image);
}
Error: TypeError: range.getAs is not a function at add_WSA(report:5:21)
PS:我对社区和 JavaScript 来说都是新手。请耐心等待。非常感谢对更精简或更有效的问题解决方案提供的所有其他帮助。谢谢。
这个答案怎么样?
问题和解决方法:
遗憾的是,在现阶段,范围对象无法直接转换为PNG格式。所以在这种情况下,需要使用变通方法。在这个答案中,作为解决方法,我想建议使用 Charts Service。使用 Charts Service 时,Spreadsheet 的范围可以转换为图像 blob。
示例脚本:
function add_WSA(){
//Opening the Spreadsheet
var ss = SpreadsheetApp.openById("insertSpreadsheetID");
var range = ss.getRange("example!A1:F20");//in A1 Notation
//Conversion into an png image
// I modified below script.
const [header, ...values] = range.getDisplayValues();
const table = Charts.newDataTable();
header.forEach(e => table.addColumn(Charts.ColumnType.STRING, e));
values.forEach(e => table.addRow(e));
const image = Charts.newTableChart().setDataTable(table.build()).setDimensions(500, 500).setOption('alternatingRowStyle', false).build().getBlob();
//Opening the specific Slide (Nr. 3)
var slide = SlidesApp.openById("mySlidesID").getSlides()[2];
//Insertion of image
slide.insertImage(image);
}
结果:
当上述脚本为运行时,可得到如下示例结果
注:
- 请在启用 V8 的情况下使用此脚本。
- 在这种情况下,例如,当您要更改字体颜色时,请在每个单元格值中使用 HTML 代码。