首页 > 解决方案 > 尝试将 ppt 转换为 Google Slide 时收到转换错误

问题描述

在我的谷歌脚本程序中,我试图遍历一个文件夹并将所有 ppt 文件制作成谷歌幻灯片文件。

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 Drive 的 UI 中,您可以将 ppt 作为 Google 幻灯片打开。有什么解决方法吗?还是我做错了?

我确实找到了这一点,但这与我想要完成的相反。

标签: google-apps-scriptgoogle-drive-apigoogle-slides-api

解决方案


它无法使用getAs(). 您可以使用 Drive API 实现此目的。在此修改中,我使用了带有高级 Google 服务的 Drive API。

使用此脚本时,请在高级 Google 服务和 API 控制台启用 Drive 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}]}
  • 如果要从转换后的文件中检索文件 ID,请使用var id = Drive.Files.insert({title: powerPoint.getName(), mimeType: MimeType.GOOGLE_SLIDES}, powerPoint.getBlob()).id.

参考:

如果我误解了你的问题,请告诉我。我想修改它。


推荐阅读