Загрузка презентации Google Slides в виде документа PowerPoint с использованием скрипта Google Apps?

Графический интерфейс Google Slides предлагает загрузить презентацию GSlides в виде Powerpoint (myFile.pptx). Я не смог найти эквивалент в документации по скрипту Google Apps - есть указатель?

РЕДАКТИРОВАТЬ

Благодаря комментариям и ответам, я попробовал этот фрагмент:

function testFileOps() {
  // Converts the file named 'Synthese' (which happens to be a Google Slide doc) into a pptx
  var files = DriveApp.getFilesByName('Synthese');
  var rootFolder = DriveApp.getRootFolder();
  while (files.hasNext()) {
    var file = files.next();
    var blobPptx = file.getBlob().getAs('application/vnd.openxmlformats-officedocument.presentationml.presentation');
    var result = rootFolder.createFile(blobPptx);
  }
}

Возвращает ошибку:

Преобразование из application/vnd.google-apps.presentation в application/vnd.openxmlformats-officedocument.presentationml.presentation не поддерживается. (строка 7, файл "Код")

ВТОРОЕ РЕДАКТИРОВАНИЕ

Как и в другом предложении в комментариях, я попытался сделать http-вызов из Google App Script, который бы напрямую преобразовывал gslides в pptx без ограничения размера. Он создает файл на G Drive, но этот файл поврежден / не читается. Сценарий ГАЗА:

function convertFileToPptx() {
  // Converts a public Google Slide file into a pptx
 var rootFolder = DriveApp.getRootFolder();
 var response = UrlFetchApp.fetch('https://docs.google.com/presentation/d/1Zc4-yFoUYONXSLleV_IaFRlNk6flRKUuAw8M36VZe-4/export/pptx');
 var blobPptx = response.getContent();
 var result = rootFolder.createFile('test2.pptx',blobPptx,MimeType.MICROSOFT_POWERPOINT);
}

Заметки:

  • Я получил MIME-тип для PPTX здесь
  • используя тип пантомимы 'pptx' возвращает то же сообщение об ошибке

4 ответа

Решение

Как насчет этой модификации?

Точка модификации:

  • response.getContent() возвращает байтовый массив. Поэтому, пожалуйста, используйте response.getBlob(),

Модифицированный скрипт:

function convertFileToPptx() {
  var fileId = "1Zc4-yFoUYONXSLleV_IaFRlNk6flRKUuAw8M36VZe-4";
  var outputFileName = "test2.pptx";

  var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
  var rootFolder = DriveApp.getRootFolder();
  var response = UrlFetchApp.fetch(url);
  var blobPptx = response.getBlob();
  var result = rootFolder.createFile(blobPptx.setName(outputFileName));
}

Замечания:

  • Если вы хотите конвертировать слайды Google, которые не были опубликованы, на вашем диске Google, используйте маркер доступа. В это время, пожалуйста, измените url следующее.
    • var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx?access_token=' + ScriptApp.getOAuthToken();
  • DriveApp.createFile() создает файл в корневой папке по умолчанию.

Рекомендации:

Как упомянуто tehhowch, вы можете получить файл Google Slide с вашего диска и получить его как .pptx, (Не уверен в типе пантомимы.)

File#getAs:

Чтобы получить byte[] выполните:

      function downloadAsPPTX(){

  var presentation = SlidesApp.getActivePresentation();
     
  var fileId = presentation.getId();               
  var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
  
  var response = UrlFetchApp.fetch(url);      
  var blobPptx = response.getBlob();
   Logger.log("size: "+blobPptx.getBytes().length);

}

Я добавляю все модификации с токеном и конкретной папкой

      function convertFileToPptx() {
  var fileId = "Your File ID";
  var outputFileName = "name.pptx";

  var url = 'https://docs.google.com/presentation/d/' + fileId + '/export/pptx';
  //var rootFolder = DriveApp.getRootFolder();
  var rootFolder = DriveApp.getFolderById("Your Folder ID")
  var params = {method:"GET", headers:{"authorization":"Bearer "+ ScriptApp.getOAuthToken()}};
  var response = UrlFetchApp.fetch(url,params);
  var blobPptx = response.getBlob();
  var result = rootFolder.createFile(blobPptx.setName(outputFileName));
}
Другие вопросы по тегам