我正在处理一个基于搜索栏导入不同图像的文档(它会自动生成带有信息的传单)。
但是图像的缩放比例不好,因此我正在尝试使用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);
}
}
答案 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);
}
}