【问题标题】:How to copy a range from a spreadsheet as an image to Google Slides?如何将电子表格中的范围作为图像复制到 Google 幻灯片?
【发布时间】:2020-08-19 11:15:16
【问题描述】:

我正在尝试将特定 Google 电子表格的一系列单元格作为图像复制到 Google 幻灯片上。但我几乎找不到有用的代码。这是我想出的,但我仍然无法将单元格范围转换为图像/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);
}

错误:TypeError:range.getAs 不是函数 在 add_WSA(report:5:21)

PS:我对社区和 JavaScript 还很陌生。请耐心等待。非常感谢有关更精简或更有效解决问题的所有其他帮助。谢谢。

【问题讨论】:

标签: javascript google-apps-script google-sheets google-slides


【解决方案1】:

这个答案怎么样?

问题和解决方法:

很遗憾,在当前阶段,范围对象无法直接转换为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 代码。

参考:

【讨论】:

  • 不幸的是,这不支持格式化表。图像结果丢失了所有颜色等
  • @Ling Loeng 关于您对unfortunately this doesn't support formatting sheet. image result was lost all coloring etc 的评论,是的。所以我建议将此作为将范围转换为图像的一种解决方法,我在回答中说In this case, for example, when you want to change the font color, please use HTML code in each cell value.。这是因为我的技术不好。我为我糟糕的技术深表歉意。如果您能原谅我糟糕的英语水平,我将不胜感激。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-18
相关资源
最近更新 更多