Google apps script 重命名演示文稿和脚本后执行google应用程序脚本(google幻灯片)时出现问题

Google apps script 重命名演示文稿和脚本后执行google应用程序脚本(google幻灯片)时出现问题,google-apps-script,Google Apps Script,我对编程和使用谷歌应用程序脚本相当陌生。 我编写的脚本将文本框(谷歌幻灯片)中的选定文本拆分为不同的文本框(初始文本框的每一行都是一个单独的文本框)。代码只是对developers.google.com上的示例的修改 function SelectedTextGrabber() { var selection = SlidesApp.getActivePresentation().getSelection(); var selectionType = selection.getSelec

我对编程和使用谷歌应用程序脚本相当陌生。 我编写的脚本将文本框(谷歌幻灯片)中的选定文本拆分为不同的文本框(初始文本框的每一行都是一个单独的文本框)。代码只是对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;
}

}
函数SelectedTextGrabber(){
var selection=SlidesApp.getActivePresentation().getSelection();
var selectionType=selection.getSelectionType();
var-currentPage;
开关(选择类型){
案例幻灯片App.SelectionType.NONE:
Logger.log(“未选择任何内容”);
打破
...
案例幻灯片App.SelectionType.TEXT:
var tableCellRange=selection.getTableCellRange();
if(tableCellRange!=null){
var tableCell=tableCellRange.getTableCells()[0];
Logger.log('所选文本位于第行的表格中'+
tableCell.getRowIndex()+',列'+
tableCell.getColumnIndex());
}
var textRange=selection.getTextRange();
if(textRange.getStartIndex()==textRange.getEndIndex()){
Logger.log('文本光标位置:'+textRange.getStartIndex());
}否则{
Logger.log('所选内容是从:'+textRange.getStartIndex()+'到:'的文本范围+
textRange.getEndIndex()+'已选定';
var s1=textRange.asString();
var s2='';
var s3=[];
对于(变量i=0;i
它工作得很好,但是当我重命名脚本和演示文稿时,我得到了类型错误:无法调用null的方法“getSelectionType”。(第4行,文件“代码”)。

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

我正在尝试你的代码,但在示例幻灯片中没有为我工作。你能提供一个测试你的代码的幻灯片样本吗?Raserhin,谢谢你尝试帮助我!正如您在代码中看到的,您必须在文本框中选择文本(Ctrl(Cmd)+A)才能使其工作。您还可以在第9行中看到“…”。我写它是为了缩短代码。只要删除这些省略号(…)您就可以修改名称编辑之间的幻灯片。对我来说,你犯的错误似乎是当我试图得到一张不存在的幻灯片时。如果没有第二张幻灯片,这行代码将返回null
var slide=SlidesApp.getActivePresentation().getSlides()[1]
在我的例子中,它返回一个
null
值(记住是基于0的数组)。此后,我多次尝试更改幻灯片的名称,但都没有成功。也可以返回一个
null
值。说到演示文稿,没什么特别的。我创建了一个包含两张幻灯片的幻灯片,将要拆分的文本框放在第二张幻灯片上,因为第一张幻灯片基本上是标题。根据代码,我将拆分的文本框放在第二张幻灯片上。对不起,我以前没提过。