google-apps-script - 尝试将 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 幻灯片打开。有什么解决方法吗?还是我做错了?
我确实找到了这一点,但这与我想要完成的相反。
解决方案
它无法使用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
.
参考:
如果我误解了你的问题,请告诉我。我想修改它。
推荐阅读
- ipfs - 如何完全卸载 IPFS 并从头开始重新启动所有内容并获得新的 peer id?
- python - Jupyter Notebook 上的大文件崩溃
- facebook - 如何通过 URL 将参数传递给 Facebook 即时游戏应用程序?
- c++ - 带有割线的椭圆曲线
- date - 如何在 nuxtjs 中设置服务器日期配置
- php - 如何将数据库表数据按两列分组并输出为json?
- mule - 请求不包含“文件”部分或“元数据”部分
- java - Executor Thread Pool - 限制队列大小和最旧的出队
- c++ - 将数据库存储在动态位置并使用我部署的应用程序访问它
- azure-cosmosdb - 同一 Azure Cosmos DB 一次运行其他时间显示消息大小太大