Изменить размер всех изображений после редактирования в таблицах Google - PullRequest
0 голосов
/ 12 февраля 2019

Я работаю в документе, который импортирует различные изображения на основе панели поиска (она автоматически генерирует рекламный листок с информацией).

Изображения, однако, не масштабируются, поэтому я пытаюсь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 голосов
/ 12 февраля 2019

Итак .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);

  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...