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();
} 

请注意,如果要成功执行脚本,您需要先点击要调整大小的图表。

我选择了不同的尺寸,以便可以看到图表。