如何用Google Apps Script将Base64编码PDF数据转存至Google Drive
没问题,我帮你补全并优化这段代码,重点处理Base64转PDF的核心逻辑,确保能正确把编码数据转换成PDF文件并存到指定Drive文件夹:
function myFunction() { // 1. 获取目标存储文件夹 const targetFolder = DriveApp.getFolderById("0B9EI2E_9Cj9rT1JmVk5ESnhVbjA"); // 2. 读取存储Base64编码数据的文件 const base64SourceFile = DriveApp.getFileById("18cmOQXdAaW1lmYLvDhpi4BrYFI5LWMh2"); // 3. 提取纯Base64字符串内容 const base64Content = base64SourceFile.getAs('text/plain').getDataAsString(); // 4. 解码Base64为PDF字节数组(注意:这里不需要指定UTF-8,Base64是二进制编码) const pdfBinaryBytes = Utilities.base64Decode(base64Content); // 5. 在目标文件夹创建PDF文件(指定MIME类型确保Drive识别为PDF) const createdPdf = targetFolder.createFile( "生成的PDF文件.pdf", // 自定义文件名 pdfBinaryBytes, // 解码后的二进制数据 "application/pdf" // 关键:指定PDF的MIME类型 ); // 可选:打印结果确认文件创建成功 console.log("PDF已成功保存到Drive,文件ID:" + createdPdf.getId()); }
几个关键注意点:
- 解码Base64时不要加
Utilities.Charset.UTF_8:Base64是对二进制数据的编码,直接解码就能得到PDF的原始字节,UTF-8是文本编码,用在这里会导致数据损坏 - 必须指定
application/pdf作为MIME类型:如果不指定,Drive可能会把文件识别为普通二进制文件,无法直接预览 - 确保源文件里的Base64字符串是纯净的:如果有多余的换行、空格或前缀(比如
data:application/pdf;base64,),记得先清理,比如用base64Content.replace(/^data:application\/pdf;base64,/, '').replace(/\s/g, '')
内容的提问来源于stack exchange,提问作者Ergun
相关产品推荐
相关产品推荐

