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

修复Google Sheets脚本错误:Utilities.newBlob参数不匹配

修复批量转换HTML到表格富文本的代码错误

错误原因

报错的核心问题是你用getValues()获取了整列的二维数组,但Utilities.newBlob()要求第一个参数是字符串,不是数组。单单元格场景下getValue()返回字符串所以可行,批量取整列时返回的是二维数组,直接传入就会触发参数不匹配的异常。

修复后的代码

function convertHTMLToRichText() {
  var ss = SpreadsheetApp.openById("18AvwS9scxVxix7CgPhr2UGjH7qts21j8xv47xInY-hw");
  var targetSheet = ss.getSheets()[5]; // 要写入富文本的目标工作表
  var dataSheet = ss.getSheetByName('test');
  var lastRow = dataSheet.getLastRow();
  
  // 获取G列从第2行开始的所有HTML数据(二维数组格式)
  var htmlValues = targetSheet.getRange("G2:G" + lastRow).getValues();
  
  // 遍历每一行,逐个处理HTML内容
  for (var i = 0; i < htmlValues.length; i++) {
    var html = htmlValues[i][0]; // 取出当前行的单个HTML字符串
    if (!html) continue; // 跳过空单元格,避免无效处理
    
    // 1. 将HTML字符串转为Blob对象
    var blob = Utilities.newBlob(html, MimeType.HTML, "temp.html");
    
    // 2. 生成临时Google文档,用于转换HTML格式
    var tempDoc = Drive.Files.insert(
      { title: "temp_rich_text", mimeType: MimeType.GOOGLE_DOCS },
      blob
    );
    
    // 3. 将临时文档的内容转为表格富文本,写入对应D列单元格
    var res = RichTextApp.DocumentToSpreadsheet({
      range: targetSheet.getRange("D" + (i + 2)), // 对应第i+2行(从D2开始)
      document: DocumentApp.openById(tempDoc.id),
    });
    
    // 4. 删除临时文档,避免占用Drive空间
    DriveApp.getFileById(tempDoc.id).setTrashed(true);
  }
  
  console.log("批量转换完成");
}

关键修改点

  • 循环遍历整列的HTML数据,逐个取出单个字符串传入Utilities.newBlob(),确保参数类型正确
  • 增加空单元格判断,跳过无效内容
  • 动态计算D列的目标单元格位置,保证每个HTML对应写入正确的行
  • 每个HTML单独生成临时文档,处理完成立即删除,避免Drive中堆积垃圾文件

注意事项

  • 确保已在脚本编辑器的「资源」->「高级Google服务」中开启Drive API,否则Drive.Files.insert会报错
  • 如果处理的行数较多,建议在循环中添加Utilities.sleep(1000)(休眠1秒),避免触发Google服务的配额限制

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 23:55:23