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

将Drive文件夹多CSV合并至Google Sheets单一工作表时代码报错求助

问题解决:Google Apps Script导入CSV报错处理

报错原因

你遇到的Exception: Cannot convert 'function () { [native code] }1' to int.错误,根源是代码里sheet.getLastRow +1的写法错误:

  • getLastRow是Google Sheets的方法,必须通过()调用才能返回当前工作表的最后一行行号;
  • 直接写sheet.getLastRow会获取到函数本身,和+1拼接后变成无效的字符串值,无法被getRange方法解析为整数行号,从而触发类型转换异常。

修正后的代码

function appendCSV() {
  const folder = DriveApp.getFolderById("ID_Folder");
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet_Name");
  const files = folder.getFiles();
  const csvFiles = [];

  // 先收集所有CSV文件(可选:如果需要按顺序导入,可在此步骤排序)
  while (files.hasNext()) {
    const file = files.next();
    if (file.getMimeType() === "text/csv") {
      csvFiles.push(file);
    }
  }

  // 按文件名排序(可选,根据需求调整排序规则)
  csvFiles.sort((a, b) => a.getName().localeCompare(b.getName()));

  // 逐个导入CSV数据
  csvFiles.forEach(file => {
    const csvData = Utilities.parseCsv(file.getBlob().getDataAsString(), ",");
    // 关键修正:调用getLastRow()方法获取行号
    sheet.getRange(sheet.getLastRow() + 1, 1, csvData.length, csvData[0].length).setValues(csvData);
  });
}

关键修改说明

  1. 核心修正:将sheet.getLastRow +1改为sheet.getLastRow() +1,确保获取到有效的最后一行行号;
  2. 可选优化:
    • 先收集所有CSV文件再处理,便于添加排序逻辑(Drive的getFiles()返回的文件顺序不固定,若需要按特定顺序导入,可通过sort方法调整,示例中按文件名排序);
    • 函数名修正为appendCSV(原代码中happendCSV是拼写错误,不影响运行但建议规范命名)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 05:42:44