我想将所有元素的大小设置为第一个选中元素的大小。但我的代码似乎有问题,不知何故第一个元素大小不适用于其他人。
请看附件
/*
* Make all elements same size
*/
function sameSizeElements() {
var selection = SlidesApp.getActivePresentation().getSelection();
var selectionType = selection.getSelectionType();
var pageElements = selection.getPageElementRange().getPageElements();
//iterate the selected page elements to grab the values of each positiion
for (var i = 0; i < pageElements.length; i++) {
if(i != 0){
pageElements[i].setWidth(pageElements[0].getWidth());
pageElements[i].setHeight(pageElements[0].getHeight());
}
}
}
这是 full code您可以放入 ScriptEditor > code.js 默认文件并刷新幻灯片。它将按照您想要的调试方式工作。
已更新
我们正在与 Google App Script 问题跟踪团队讨论 - https://issuetracker.google.com/issues/162545277
最佳答案
作为当前的解决方法,这个方法怎么样?
问题和解决方法:
不幸的是,目前阶段似乎this bug仍然没有解决。这样,在您的情况下,无法检索第一个选择的图像。我认为这是您当前问题的原因。
为了实现您的目标,作为当前的解决方法,我想提出以下流程。
- 选择用作基本尺寸的图像并运行脚本。
- 图像的对象ID被保存到PropertiesService。
- 选择要调整大小的图像并运行脚本。
当您的脚本针对此流程进行修改时,它将变成如下。
修改后的脚本:
function allMenu(){
var slideUi = SlidesApp.getUi();
slideUi.createMenu('LAK')
.addSeparator()
.addSubMenu(slideUi.createMenu('Sizes')
.addItem('Select base image', 'selectBaseImage') // Added
.addItem('Same Size', 'sameSizeElements'))
.addToUi();
}
// 1. At first, it saves an image which is used as the base image.
function selectBaseImage() {
var selection = SlidesApp.getActivePresentation().getSelection();
var pageElements = selection.getPageElementRange().getPageElements();
if (pageElements.length == 1) {
PropertiesService.getScriptProperties().setProperty("baseImage", pageElements[0].getObjectId());
} else {
throw new Error("Select one image.");
}
}
// 2. As the next step, the selected images are resized using the saved image.
function sameSizeElements() {
var prop = PropertiesService.getScriptProperties();
var objectId = prop.getProperty("baseImage");
if (objectId != "") {
var selection = SlidesApp.getActivePresentation().getSelection();
var baseImage = selection.getCurrentPage().getPageElementById(objectId);
var pageElements = selection.getPageElementRange().getPageElements();
for (var i = 0; i < pageElements.length; i++) {
pageElements[i].setWidth(baseImage.getWidth());
pageElements[i].setHeight(baseImage.getHeight());
}
prop.deleteProperty("baseImage");
} else {
throw new Error("Base image was not found.");
}
}
结果:
引用资料:
关于google-apps-script - 如何将元素转换为与第一个选定元素相同的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63172078/