如何通过Apps Script将Google Photos的HEIC文件转换为JPG或PNG
Apps Script实现HEIC转JPG/PNG后上传Google Photos方案
核心逻辑
利用Google Drive原生支持HEIC格式解析的能力,直接在Google服务生态内完成格式转换,无需第三方工具、无需手动操作。
前置准备
使用前需要先在Apps Script中开启Drive API高级服务:
- 打开脚本编辑器,点击左侧「服务」按钮
- 在弹出的列表中找到「Drive API」,选择v3版本后点击添加
修改后完整代码
function uploadMediaItems() { const albumId = "AKwCquOrmWbEihvwEqIM7Jy_H8wrkM_dof1eIGwXq8YZV-uuj9jWvkMT5oWkG6P0a-w_w9VyTOxM"; // 请设置相册ID var arrId = [ "1ssNYJFSEdfRI55IUi_tte3iC_JcPLG-0" ]; const items = arrId.map(id => { const file = DriveApp.getFileById(id); let blob, filename = file.getName(); // 匹配HEIC格式文件 if (/\.heic$/i.test(filename)) { // 如需转换为PNG,将下方image/jpeg改为image/png即可 const exportLink = Drive.Files.get(id, {fields: 'exportLinks'}).exportLinks['image/jpeg']; // 拉取转换后的图片资源 blob = UrlFetchApp.fetch(exportLink, { headers: {Authorization: `Bearer ${ScriptApp.getOAuthToken()}`} }).getBlob(); // 如需转换为PNG,将下方.jpg改为.png即可 filename = filename.replace(/\.heic$/i, '.jpg'); } else { // 非HEIC文件直接使用原资源 blob = file.getBlob(); } return {blob: blob, filename: filename}; }); const res = GPhotoApp.uploadMediaItems({albumId: albumId, items: items}); console.log(JSON.stringify(res)) }
方案说明
- 转换过程全程自动化,无需人工右键另存操作
- 采用Drive原生解码能力,画质损失极小
- 所有操作都在Google服务内部完成,无数据外泄风险
内容的提问来源于stack exchange,提问作者user16731842
相关产品推荐
相关产品推荐

