尝试将ppt转换为Google Slide时收到转换错误

时间:2018-12-31 19:37:04

标签: google-apps-script google-drive-api google-slides-api

在我的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幻灯片。有什么解决办法吗?还是我做错了?

我确实找到了this,但这与我要实现的目标相反。

1 个答案:

答案 0 :(得分:2)

它无法使用getAs()从Powerpoint格式转换为Google幻灯片。您可以使用Drive API来实现。在此修改中,我通过高级Google服务使用了Drive API。

使用此脚本时,请在Advanced Google Services和API控制台上启用Drive API。您可以在here上看到有关的信息。

修改后的脚本:

请进行如下修改。

从:
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

参考文献:

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