You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决分割DataURI后无法解码为图片的问题?

问题解决:DataURI解码为图片失败的修复方案

你的代码存在几个关键问题,导致无法正常解码DataURI并生成图片,以下是修复后的代码和问题说明:

核心问题分析

  • split("data:image/png;base64,") 返回的是数组,直接将数组传给Utilities.newBlob()会导致错误,应该取数组的第二个元素(索引为1的部分,即纯base64编码内容)
  • 代码中存在变量名错误:dataurl = Utilities.base64Decode(dataurl); 这里dataurl未定义就被使用,属于逻辑错误
  • 生成Blob的流程错误:需要先解码base64字符串,再创建Blob,不能直接用原始分割结果操作

修复后的完整代码

function Image_Build() {
  var data_sheet = SpreadsheetApp.openById('10DY3Qlw6EwC_NnxSxoU-0H88PYKv83rOaRImn4yubDc').getSheetByName('表單回應 1');
  var data_row = data_sheet.getLastRow();
  var data_col = data_sheet.getLastColumn();
  var range = data_sheet.getRange(1, 1, data_row, data_col);
  var values = range.getValues();
  var datauri = values[1][16];

  // 分割DataURI,提取纯base64编码部分
  var base64Str = datauri.split("data:image/png;base64,")[1];
  if (!base64Str) {
    console.log("无效的DataURI格式");
    return;
  }

  // 解码base64并创建图片Blob
  var decodedBytes = Utilities.base64Decode(base64Str);
  var imgBlob = Utilities.newBlob(decodedBytes, 'image/png', 'test.png');

  // 保存到指定Drive文件夹
  var folder = DriveApp.getFolderById("1yECMj1EvBQhV1gigslYJu5KM3bxsK9yy");
  folder.createFile(imgBlob);
}

额外优化点

  • 增加格式校验:判断分割后是否存在有效的base64字符串,避免空值报错
  • 变量命名更清晰,减少混淆
  • 直接通过Blob参数指定文件名和MIME类型,简化文件创建流程

内容的提问来源于stack exchange,提问作者Jayco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 05:24:26