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

Google Sheets导入数据前如何筛选Column2以'41'开头的Cost centers?

问题原因与修正方案

原有代码错误点

  • startsWith() 是字符串实例的方法,你错误地在新建的空字符串String()上调用该方法,而非在你要判断的Item[1](Column2对应值)上调用
  • startsWith()的参数需要直接传入目标前缀字符串'41',不需要包裹数组
  • 未做类型兼容:如果成本中心被存储为数字格式,直接调用字符串方法会触发报错,需要先统一转成字符串再判断

修正后的过滤逻辑

你只需要替换原有databasis赋值的那一行即可,修改后代码如下:

// 过滤逻辑:将Column2值转字符串后判断是否以41开头,空值自动过滤
var databasis = rangeValues.filter(function(Item){
  return Item[1] && Item[1].toString().startsWith('41');
});

如果你需要保留原表的表头行(第一行不参与过滤直接保留),可以用以下写法:

var databasis = rangeValues.filter(function(Item, index){
  // 第一行是表头直接保留,其余行判断过滤条件
  return index === 0 || (Item[1] && Item[1].toString().startsWith('41'));
});

完整可运行代码参考

// 获取当前活动表
var sheet = SpreadsheetApp.getActiveSheet();

// 通过ID读取Drive中存储的目标表格
var employeeActuals = SpreadsheetApp.openById(
  "1yL_0eB9b6CQLOshjPglDA-MnP2HZdLeIrKh4DO-qN0c" 
);

// 读取目标表格Overview页的全量数据
var employeeActualsSheet = employeeActuals.getSheetByName("Overview")
var range = employeeActualsSheet.getDataRange();
var rangeValues = range.getValues();

// 修正后的过滤逻辑,保留表头
var databasis = rangeValues.filter(function(Item, index){
  return index === 0 || (Item[1] && Item[1].toString().startsWith('41'));
});

Logger.log(databasis);

// 后续写入新表可参考以下代码
// if(databasis.length > 0){
//   sheet.getRange(1, 1, databasis.length, databasis[0].length).setValues(databasis);
// }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:45:02