TypeError: Cannot read property 'getSelectionType'; Automatically resize an inserted chart in google slides
TypeError: Cannot read property 'getSelectionType'; Automatically resize an inserted chart in google slides
我是社区的新手,这是我的第一个问题,请耐心等待!
我正在尝试 运行 一个脚本,它可以将插入的图表调整为特定 width/height。
我的最终目标是在按键时调整之前插入的图表的大小,但我无法到达那里,所以这是我的解决方法。
function resizeCharts() {
var selectedObjects = SlidesApp.getActivePresentation().getSelection();
if (selectedObjects.getSelectionType.CURRENT_PAGE() == SlidesApp.SelectionType.PAGE_ELEMENT) {
var pageElements = selectedObjects.getPageElementRange().getPageElements();
for (var i = 0; i < pageElements.length; i++) {
if (pageElements[i].getPageElementType() == SlidesApp.PageElementType.sheetsChart) {
pageElements[i].select(true);
var chart = pageElements[i];
var newWidth = 4.48;
var newHeight = 3.69;
chart.setWidth(newWidth).setHeight(newHeight);
var ui = SlidesApp.getUi();
pageElements[i].select(false);
}
}
}
}
但我无法解决以下错误信息:
TypeError: Cannot read property 'getSelectionType' of null
at rearrangeCharts(Code:3:23)
我对 google 应用脚本和 java 脚本还很陌生!
非常感谢任何帮助。谢谢。
PS:自动调整图表大小的最有效方法是什么?有没有办法通过按键触发功能?目前我是定时触发的
首先,您需要对 resizeCharts() 函数进行以下更改:
function resizeCharts() {
var selectedObjects = SlidesApp.getActivePresentation().getSelection();
if (selectedObjects.getCurrentPage() != null) {
var pageElements = selectedObjects.getPageElementRange().getPageElements();
for (var i = 0; i < pageElements.length; i++) {
if (pageElements[i].getPageElementType().toString( ) == "SHEETS_CHART") {
pageElements[i].select(true);
var chart = pageElements[i];
var newWidth = 250.48;
var newHeight = 250.48;
chart.setWidth(newWidth).setHeight(newHeight);
var ui = SlidesApp.getUi();
pageElements[i].select(false);
}
}
}
}
然后您可以将以下代码片段作为单独的函数添加到现有脚本中,以创建一个宏菜单按钮,使您可以从演示文稿文件中执行脚本:
function onOpen(e) {
SlidesApp.getUi()
.createMenu('Resize Chart')
.addItem('Resize Selected Chart', 'resizeCharts')
.addToUi();
}
请注意,如果要成功执行脚本,您需要先点击要调整大小的图表。
我选择了不同的尺寸,以便可以看到图表。
我是社区的新手,这是我的第一个问题,请耐心等待!
我正在尝试 运行 一个脚本,它可以将插入的图表调整为特定 width/height。 我的最终目标是在按键时调整之前插入的图表的大小,但我无法到达那里,所以这是我的解决方法。
function resizeCharts() {
var selectedObjects = SlidesApp.getActivePresentation().getSelection();
if (selectedObjects.getSelectionType.CURRENT_PAGE() == SlidesApp.SelectionType.PAGE_ELEMENT) {
var pageElements = selectedObjects.getPageElementRange().getPageElements();
for (var i = 0; i < pageElements.length; i++) {
if (pageElements[i].getPageElementType() == SlidesApp.PageElementType.sheetsChart) {
pageElements[i].select(true);
var chart = pageElements[i];
var newWidth = 4.48;
var newHeight = 3.69;
chart.setWidth(newWidth).setHeight(newHeight);
var ui = SlidesApp.getUi();
pageElements[i].select(false);
}
}
}
}
但我无法解决以下错误信息:
TypeError: Cannot read property 'getSelectionType' of null at rearrangeCharts(Code:3:23)
我对 google 应用脚本和 java 脚本还很陌生! 非常感谢任何帮助。谢谢。
PS:自动调整图表大小的最有效方法是什么?有没有办法通过按键触发功能?目前我是定时触发的
首先,您需要对 resizeCharts() 函数进行以下更改:
function resizeCharts() {
var selectedObjects = SlidesApp.getActivePresentation().getSelection();
if (selectedObjects.getCurrentPage() != null) {
var pageElements = selectedObjects.getPageElementRange().getPageElements();
for (var i = 0; i < pageElements.length; i++) {
if (pageElements[i].getPageElementType().toString( ) == "SHEETS_CHART") {
pageElements[i].select(true);
var chart = pageElements[i];
var newWidth = 250.48;
var newHeight = 250.48;
chart.setWidth(newWidth).setHeight(newHeight);
var ui = SlidesApp.getUi();
pageElements[i].select(false);
}
}
}
}
然后您可以将以下代码片段作为单独的函数添加到现有脚本中,以创建一个宏菜单按钮,使您可以从演示文稿文件中执行脚本:
function onOpen(e) {
SlidesApp.getUi()
.createMenu('Resize Chart')
.addItem('Resize Selected Chart', 'resizeCharts')
.addToUi();
}
请注意,如果要成功执行脚本,您需要先点击要调整大小的图表。
我选择了不同的尺寸,以便可以看到图表。