如何以编程方式删除Google幻灯片中第n个幻灯片之后的幻灯片?

问题描述

我有一些代码可以将行从Google表格中拉到Google幻灯片中。但是,我想添加逻辑,该逻辑将首先删除第二张幻灯片之后的所有幻灯片(如果有的话)。然后,它应该执行以下所有操作(替换文字)。我该怎么做?

function generateSlides() {
  var dataSpreadsheetUrl = "https://docs.google.com/spreadsheets/d/1kLb0bIVeDTb8He"; 
  var ss = SpreadsheetApp.openByUrl(dataSpreadsheetUrl);
  var deck = SlidesApp.getActivePresentation();
  var sheet = ss.getSheetByName('Form_Responses');
  var values = sheet.getRange('A2:G20').getValues();
  var slides = deck.getSlides();
  var templateSlide = slides[1];
  var presLength = slides.length;
  
  values.forEach(function(page){ 
  if(page[0]){
    
   var Email = page[1]; #column 2
   var Name = page[2]; #column 3
   var timestamp = page [0]; # column 1. 


   var shapes = (newSlide.getShapes());
     shapes.forEach(function(shape){
       shape.getText().replaceAllText('{{Email}}',Email);
       shape.getText().replaceAllText('{{Name}}',Name);
       
    }); 
   presLength = slides.length; 
   newSlide.move(presLength); 
  } // end our conditional statement
  }); //close our loop of values
  
}

解决方法

  • 使用getSlides获取演示文稿所有幻灯片的数组
  • 按与幻灯片在演示文稿中位置相对应的索引访问各个幻灯片
  • 创建一个for循环以根据索引对所有感兴趣的幻灯片进行遍历
  • 使用Slide.remove()删除幻灯片

示例代码段

  var slides = deck.getSlides();
 //change i to any other index if desired
  for (var i = 2; i < slides.length; i++){
    slides[i].remove()
  }