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

使用Google Script同步库存数据到History表仅首行保存问题求助

问题根因

你当前脚本中使用的getValue()方法仅能读取指定范围的左上角第一个单元格的值,你选取了A2:A500这类多单元格范围,实际仅能获取到A2、B2等首行单元格的内容,因此写入History表时只会保存首行数据。

修复后的完整代码

function submitData1() {
  var ss= SpreadsheetApp.getActiveSpreadsheet();
  var shUserForm= ss.getSheetByName("In-Inventory");
  var datasheet = ss.getSheetByName("DatabaseINVENTORY");
  var ui = SpreadsheetApp.getUi();
  var response = ui.alert("Submit", 'PASTIKAN SUDAH BENAR, YAKIN MAU SIMPAN DATA?',ui.ButtonSet.YES_NO);
  if (response == ui.Button.NO) {
    return;
  } 
  // 批量读取IN表所有数据
  var sourceValues = shUserForm.getRange("A2:F500").getValues();
  // 过滤空行,仅保留第一列有内容的有效行
  var validRows = sourceValues.filter(row => row[0]?.toString().trim() !== "");
  if (validRows.length === 0) {
    ui.alert("未检测到可保存的有效数据");
    return;
  }
  // 批量写入History表
  var blankStartRow = datasheet.getLastRow() + 1;
  datasheet.getRange(blankStartRow, 1, validRows.length, 6).setValues(validRows);
  ui.alert('REKAP INVENTORY TERSIMPAN');
  // 清空原表指定范围内容
  shUserForm.getRange("A2:A500").clearContent();
  shUserForm.getRange("C2:C500").clearContent();
  shUserForm.getRange("D2:D500").clearContent();
  return true ;
}

注意事项

如果要同步处理OUT表的数据,只需要复制一份该函数,将shUserForm对应的表名修改为OUT表的名称即可,逻辑完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 08:54:09