首页 > 解决方案 > 重命名演示文稿和脚本后执行谷歌应用脚​​本(谷歌幻灯片)的问题

问题描述

我对编程和使用谷歌应用脚​​本很陌生。我编写的脚本将文本框中的选定文本(谷歌幻灯片)拆分为不同的文本框(初始文本框的每一行都是一个单独的文本框)。代码只是对developers.google.com 示例的修改。

function SelectedTextGrabber() {
  var selection = SlidesApp.getActivePresentation().getSelection();
  var selectionType = selection.getSelectionType();
  var currentPage;
  switch (selectionType) {
  case SlidesApp.SelectionType.NONE:
    Logger.log('Nothing selected');
    break;
...
case SlidesApp.SelectionType.TEXT:
    var tableCellRange = selection.getTableCellRange();
    if (tableCellRange != null) {
      var tableCell = tableCellRange.getTableCells()[0];
      Logger.log('Selected text is in a table at row ' +
                 tableCell.getRowIndex() + ', column ' +
                 tableCell.getColumnIndex());
    }
    var textRange = selection.getTextRange();
    if (textRange.getStartIndex() == textRange.getEndIndex()) {
      Logger.log('Text cursor position: ' + textRange.getStartIndex());
    } else {
      Logger.log('Selection is a text range from: ' + textRange.getStartIndex() + ' to: ' +
                 textRange.getEndIndex() + ' is selected');
      var s1 = textRange.asString();
      var s2 = '';
      var s3 = [];
      for (var i = 0; i < s1.length; i++){
        if (s1[i] === '\n' || i === s1.length -1) {
            s3.push(s2);
            s2='';
        } else {
          s2 += s1[i];
        }
    }
// textbox parameteres
      var h4 = 0;
      var left = 10;
      var top = 10;
      var textsize = 12;
      var standnum = 37;
      var width = 2 * textsize + (textsize - textsize % 2) / 2 * standnum;
      Logger.log(width);

      var slide = SlidesApp.getActivePresentation().getSlides()[1];
      for (var i = 0; i < s3.length; i++){
        //анализ размера текстового блока
        var s4 = s3[i].length;
        if (s4 <= standnum) {
        h4 = textsize * 2;
        } else {
          h4 = textsize * 2 + (s4 - s4 % standnum) / standnum * textsize;
        }
        var shape = slide.insertShape(SlidesApp.ShapeType.TEXT_BOX, left, top, width, h4);
        var textRange = shape.getText();
        textRange.setText(s3[i]);
        textRange.getTextStyle().setFontSize(textsize);
        top += h4;
        if (top > 370) {
        top = 10;
        left += width;  
        }
      }
    }
    break;
  case SlidesApp.SelectionType.TABLE_CELL:
    var tableCells = selection.getTableCellRange().getTableCells();
    var table = tableCells[0].getParentTable();
    Logger.log('There are ' + tableCells.length + ' table cells selected.');
    break;
  case SlidesApp.SelectionType.PAGE:
    var pages = selection.getPageRange().getPages();
    Logger.log('There are ' + pages.length + ' pages selected.');
    break;
  default:
    break;
}

}

它工作得很好,但是当我重命名脚本和演示文稿时,我得到了 TypeError:无法调用 null 的方法“getSelectionType”。(第 4 行,文件“代码”)。

等待 30 分钟后,此脚本再次开始工作而没有错误。我认为这可能会发生,因为在谷歌服务器中进行一些更改需要时间。但是当我修改要拆分的文本框中的初始文本时,脚本给了我相同的结果,因为我没有更改初始文本(结果是文本框中的分隔行,但用于初始文本)。你知道我应该怎么做才能解决它吗?

标签: google-apps-script

解决方案


推荐阅读