如何将范围从电子表格作为图像复制到Google幻灯片? 问题和解决方法:示例脚本:结果:注意:参考:

问题描述

我正在尝试将特定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);
}

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

PS:我对社区和JavaScript还是陌生的。请耐心等待。非常感谢您提供其他更精简或更有效的解决方案。谢谢。

解决方法

这个答案怎么样?

问题和解决方法:

不幸的是,在当前阶段,范围对象无法直接转换为PNG格式。因此,在这种情况下,需要使用解决方法。在此答案中,作为解决方法,我建议使用Charts Service。使用Charts Service时,电子表格的范围可以转换为图像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);
}

结果:

运行上述脚本时,可以获得以下示例结果。

enter image description here

注意:

  • 请在启用V8的情况下使用此脚本。
  • 例如,在这种情况下,当您想要更改字体颜色时,请在每个单元格值中使用HTML代码。

参考:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...