При попытке конвертировать ppt в Google Slide получаю ошибку конвертации

В моей программе скриптов Google я пытаюсь перебрать папку и превратить все файлы ppt в файлы слайдов Google.

function makeSlides(url) {
  slideUrls = []; 
  var id = getId(url);
  var powerPoints = DriveApp.getFolderById(id).getFilesByType(MimeType.MICROSOFT_POWERPOINT);

  // turn ppt into slides
  while(powerPoints.hasNext()) {
    var powerPoint = powerPoints.next()
    try{
      var sheet = powerPoint.getBlob().getAs(MimeType.GOOGLE_SLIDES);
      DriveApp.getFolderById(url).createFile(sheet)
      Logger.log("OK " + powerPoint.getName());
    }catch(e) {
      Logger.log("ERROR: " + e) 
    }
 }

После проверки логов я получаю ошибку

Исключение: преобразование из application/vnd.openxmlformats-officedocument.presentationml.presentation в application/vnd.google-apps.presentation не поддерживается.

Я знаю, что в интерфейсе Google Диска вы можете открыть ppt в виде Google Slide. Есть ли работа вокруг этого? Или я делаю это неправильно?

Я нашел это, но это противоположно тому, что я пытаюсь достичь.

1 ответ

Решение

Он не может конвертировать из формата Powerpoint в Google Slides с помощью getAs(), Вы можете добиться этого с помощью Drive API. В этой модификации я использовал Drive API, используя Advanced Google Services.

Когда вы используете этот сценарий, пожалуйста, включите Drive API в Advanced Services и консоли API. Вы можете увидеть об этом здесь.

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

Пожалуйста, измените следующим образом.

От:
var sheet = powerPoint.getBlob().getAs(MimeType.GOOGLE_SLIDES);
DriveApp.getFolderById(url).createFile(sheet)
Для того, чтобы:
Drive.Files.insert({title: powerPoint.getName(), mimeType: MimeType.GOOGLE_SLIDES}, powerPoint.getBlob());

Замечания:

  • В этом измененном сценарии преобразованный файл создается в корневой папке. Если вы хотите создать в определенной папке, пожалуйста, измените из {title: powerPoint.getName(), mimeType: MimeType.GOOGLE_SLIDES} в {title: powerPoint.getName(), mimeType: MimeType.GOOGLE_SLIDES, parents: [{id: folderId}]},
  • Если вы хотите получить идентификатор файла из преобразованного файла, пожалуйста, используйте var id = Drive.Files.insert({title: powerPoint.getName(), mimeType: MimeType.GOOGLE_SLIDES}, powerPoint.getBlob()).id,

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

Если я неправильно понимаю ваш вопрос, пожалуйста, скажите мне. Я хотел бы изменить это.

Другие вопросы по тегам