在Google Spreadsheets中进行修改后,调整所有图像的大小

时间:2019-02-12 15:36:10

标签: google-apps-script google-sheets

我正在处理一个基于搜索栏导入不同图像的文档(它会自动生成带有信息的传单)。

但是图像的缩放比例不好,因此我正在尝试使用Google脚本来解决此问题。在没有编程知识的情况下,我设法提出了以下脚本,但是到目前为止,它什么也没做:)我希望有人可以给我一些有关我做错事情的指示。

提前谢谢!

function onEdit() {
 
  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var activeSheet =ss.getActiveSheet();
  var images = activeSheet.getImages();
  
  for (var i = 0; i < images.length; i++) {
    
  var originW =  images.getWidth();
  var originH = images.getHeight();
  var newW = originW;
  var newH = originH;
  var ratio = originW/originH
    
  if(originW>maxWidth){
    newW = maxWidth;
    newH = parseInt(newW/ratio);
  }
  
  images.setWidth(newW).setHeight(newH).setAttributes(styleImage);
  var newWW = images.getWidth();
  var newHH = images.getHeight();
  var newRatio = newHH/newWW;
  Logger.log("image width = "+newWW);
  Logger.log("image height = "+newHH);

  if(newHH>maxWidth){
    newHH = maxHeight;
    newWW = parseInt(newHH/newRatio);
  }
  
  images.setWidth(newWW).setHeight(newHH);
  images.getParent().setAttributes(styleImage);
      
  }
}

1 个答案:

答案 0 :(得分:0)

因此.getImages()返回一个OverGridImage对象的数组。 这意味着您将必须遍历数组并修改每个对象,而这些对象几乎正在做。您有一个for循环,但是接着继续使用对象数组而不是选择其中的对象。 images ==> images[i]在for循环中。

function onEdit() {

  var app = SpreadsheetApp;
  var ss = app.getActiveSpreadsheet();
  var activeSheet =ss.getActiveSheet();
  var images = activeSheet.getImages();

  for (var i = 0; i < images.length; i++) {

  var originW =  images[i].getWidth();
  var originH = images[i].getHeight();
  var newW = originW;
  var newH = originH;
  var ratio = originW/originH

  if(originW>maxWidth){
    newW = maxWidth;
    newH = parseInt(newW/ratio);
  }

  images[i].setWidth(newW).setHeight(newH).setAttributes(styleImage);
  var newWW = images[i].getWidth();
  var newHH = images[i].getHeight();
  var newRatio = newHH/newWW;
  Logger.log("image width = "+newWW);
  Logger.log("image height = "+newHH);

  if(newHH>maxWidth){
    newHH = maxHeight;
    newWW = parseInt(newHH/newRatio);
  }

  images[i].setWidth(newWW).setHeight(newHH);
  images[i].getParent().setAttributes(styleImage);

  }
}