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

Google Sheets脚本问题:如何获取B14:O100多列数据写入另一表格?

问题解决:批量读取Google Sheets区域数据并写入另一表格

问题原因

你的代码中使用getValue()方法获取单元格范围数据时,该方法仅返回范围第一个单元格的值,因此每个列范围(如B14:B100)只会读取B14的值,最终只写入一行数据。要获取整个区域的所有数据,需使用getValues()方法,它会返回包含区域所有单元格值的二维数组。

修正后的代码

// @ts-nocheck
function sendItem() {
  // 获取当前活动表格及InputForm工作表
  var myGoogleSheet = SpreadsheetApp.getActiveSpreadsheet();
  var shUserForm = myGoogleSheet.getSheetByName("InputForm");

  // 连接目标表格及DATA工作表
  SpreadsheetApp.enableAllDataSourcesExecution();
  var myDataBarong = SpreadsheetApp.openById('1zwH6fMLG3N5eknt9lXqVwj8BJHTX-i9jTmXn_gZotTw');
  var dataSheet = myDataBarong.getSheetByName("DATA");

  // 读取InputForm中B14:O100的所有数据(二维数组,每个元素是一行数据)
  var formRange = shUserForm.getRange("B14:O100");
  var formData = formRange.getValues();

  // 读取固定值D10、当前时间、用户邮箱
  var fixedValue = shUserForm.getRange("D10").getValue();
  var currentDate = new Date();
  var userEmail = Session.getActiveUser().getEmail();

  // 处理数据:为每一行添加固定值、时间、邮箱字段,同时过滤空行
  var processedData = formData.filter(row => row.some(cell => cell !== ""))
    .map(row => {
      row.push(fixedValue);
      row.push(currentDate);
      row.push(userEmail);
      return row;
    });

  // 批量写入目标表格
  if (processedData.length > 0) {
    var targetStartRow = dataSheet.getLastRow() + 1;
    dataSheet.getRange(targetStartRow, 1, processedData.length, processedData[0].length)
      .setValues(processedData);
    // 为时间列设置指定格式(对应新增的第2个字段,原B-O共14列,加3个字段后为第16列)
    dataSheet.getRange(targetStartRow, 16, processedData.length)
      .setNumberFormat('dd-mm-YYYY h:mm am/pm');
  }

  // 可选:清空表单数据
  // shUserForm.getRange("B14:O100").clearContent();
  // SpreadsheetApp.getUi().alert('数据已记录!');
}

关键修改说明

  • 替换取值方法:用getValues()一次性读取B14:O100的所有行数据,替代原逐个列读取的低效方式,同时解决仅取第一行的问题。
  • 过滤空行:通过filter移除表单中的空行,避免写入无效数据。
  • 批量写入:使用setValues()一次性将所有处理后的数据写入目标表格,大幅提升脚本执行效率。
  • 统一格式设置:单独对时间列设置显示格式,确保时间展示符合需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 19:25:32