首页 > 解决方案 > TypeError:无法读取属性“getSelectionType”;自动调整谷歌幻灯片中插入图表的大小

问题描述

我对社区很陌生,这是我的第一个问题,请耐心等待!

我正在尝试运行一个脚本,它可以将插入的图表调整为特定的宽度/高度。我的最终目标是在按键时调整先前插入的图表的大小,但我无法到达那里,所以这是我的解决方法。

  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:在重新排列图表时无法读取 null 的属性“getSelectionType”(代码:3:23)

我对谷歌应用脚​​本和java脚本非常陌生!任何帮助都非常感谢。谢谢你。

PS:自动调整图表大小的最有效方法是什么?有没有办法通过按键触发功能?目前,我正在按时间触发该功能。

标签: google-apps-scriptgoogle-slides-apigoogle-slides

解决方案


首先,您需要对 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();
} 

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

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


推荐阅读