Скрипт для чтения папки из 120 презентаций Google Slides и импорта слайдов в один файл - PullRequest
0 голосов
/ 02 мая 2019

Я преподаю в старшей школе с помощью Google Classroom. У меня есть студенты, которые используют Google Slides для отслеживания своих проектов. Я создаю один шаблон Slides Presentation, и GC автоматически создает идентичную версию для каждого учащегося и сохраняет их в одной папке.

Требуется много времени, чтобы открыть каждую презентацию и прочитать, как студенты обновили шаблон.

Я хотел бы написать сценарий, который будет проходить через всю папку, открывая каждую презентацию одну за другой и сравнивая каждый слайд каждой презентации с соответствующим слайдом в оригинальном шаблоне. Если слайд в презентации студента был изменен (добавлены тексты или изображения), я бы хотел, чтобы этот слайд был импортирован в новую презентацию. В конце я хотел бы иметь одну презентацию, которая содержит слайды, которые являются копиями всех слайдов, которые были обновлены в студенческих презентациях.

Можете ли вы помочь мне сделать это? Пожалуйста.

Я написал простой скрипт слайдов, который может проходить и подсчитывать количество слайдов в презентациях, но я не смог выяснить, как сравнить то, что на самом деле находится на слайдах, и на основе этого сравнения импортировать обновленные слайды.

Хотелось бы, чтобы скрипт, который создает презентацию слайдов, которые были извлечены из файла из 120 презентаций студентов, все сделаны из того же оригинального шаблона.

Вот сценарий, который я написал, который учитывает количество слайдов в каждой презентации:


var sourcefile = "0ByRdqL7-G6eXflBpUEIwa0tUcmFERDRMajNQMHZCbllPVHRlVDBzT0tJNVdjY1lDeE1MdE0"

var destination = "1tAGcxlcudN4ThNwjxG89d-Xr0eVUsLFXkhsIFrL2S7M"

function main() {  
  var files = getFiles(sourcefile)  
  var record = []  
  while (files.hasNext()) {  
    var file = files.next();  
    if (file.getMimeType() != "application/vnd.google-apps.presentation") {  
      continue  
    }  
    // (file.getMimeType())  
    record.push(countSlidesInFile(file.getId()))  
  }  
  writeToSheets(record,destination)  
}  

function getFiles(id) {  
  return DriveApp.getFolderById(id).getFiles() 
}  

function writeToSheets(matrix, SheetID) {  
  SpreadsheetApp.openById(SheetID).getSheetByName("Sheet1").getRange(1,1,118,2).setValues(matrix)  
}

function countSlidesInFile(id) {  
  var pres = SlidesApp.openById(id)  
  var slides = pres.getSlides()  
  var numSlides = 0  
  slides.forEach(function() { numSlides += 1 })  
  var presInfo = [pres.getName(), numSlides]  
  return presInfo  
}  

...