我想将所有元素的大小设置为第一个选定元素的大小。但我的代码似乎有问题,不知何故第一个元素大小对其他人不起作用。
请参阅附件脚本
/*
* 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());
}
}
}
这里是完整代码 https://codeshare.io/29gWZM您可以放入 ScriptEditor > code.js 默认文件并刷新幻灯片。它会按照您想要的方式进行调试。
Updated
我们正在与 Google App Script 问题跟踪团队讨论 -https://issuetracker.google.com/issues/162545277 https://issuetracker.google.com/issues/162545277
作为目前的解决方法,这个方法怎么样?
问题和解决方法:
不幸的是,在现阶段,似乎this bug https://stackoverflow.com/q/62483449/7108653仍然没有解决。这样,在您的情况下,无法检索第一个选定的图像。我认为这就是您当前问题的原因。
为了实现您的目标,作为当前的解决方法,我想提出以下流程。
- Select an image which is used as the basic size and script is run.
- 图像的对象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.");
}
}
Result:
参考:
- 获取选择() https://developers.google.com/apps-script/reference/slides/presentation#getselection
- 物业服务 https://developers.google.com/apps-script/guides/properties
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)