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

如何修改Google Apps Script提取列中名称并填充至目标列

问题

我编写了一段Google Apps Script代码,原本想把表格第4列内容处理后填充到第5列,但目前代码仅能原样复制内容。我需要将形如"SUIVI DU TEMPS_LOUISE_RODRIG"的内容提取出LOUISE_RODRIG部分(去掉前缀"SUIVI DU TEMPS_和末尾的引号),再填充到目标列,同时保留原有的空行填充逻辑(用上方非空值填充下方空行)。

初始表格

01234
"SUIVI DU TEMPS_LOUISE_RODRIG"
"SUIVI DU TEMPS_ANTHO_DACOSTA"

预期结果

01234
"SUIVI DU TEMPS_LOUISE_RODRIG"LOUISE_RODRIG
LOUISE_RODRIG
LOUISE_RODRIG
LOUISE_RODRIG
LOUISE_RODRIG
LOUISE_RODRIG
"SUIVI DU TEMPS_ANTHO_DACOSTA"ANTHO_DACOSTA
ANTHO_DACOSTA
ANTHO_DACOSTA
ANTHO_DACOSTA

现有代码

function CREATE_NAME() {

  var COLsheet=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA_COLLECT");

  
//copy name

  var suivname = COLsheet.getRange(5,4,COLsheet.getLastRow()-1,1).getValues();
  COLsheet.getRange(5,5, suivname.length, 1 ).setValues(suivname);

//fill the empty lines
  var name = COLsheet.getRange(5,5,COLsheet.getLastRow()-1,1).getValues();
  for( let i=1; i<name.length; i++ ) {
  if( name[i][0] === "" ) name[i][0] = name[i-1][0];
  }
  COLsheet.getRange(5,5, name.length, 1 ).setValues(name);

}

解决方案

你需要在获取第4列数据后,先对内容进行提取处理,再写入第5列。这里用正则表达式实现精准提取,同时保留原有的空行填充逻辑:

修改后的代码

function CREATE_NAME() {
  var COLsheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("DATA_COLLECT");
  
  // 获取第4列数据并处理提取目标内容
  var suivname = COLsheet.getRange(5, 4, COLsheet.getLastRow() - 1, 1).getValues();
  // 遍历数据,提取需要的名字部分
  var processedNames = suivname.map(row => {
    const original = row[0];
    if (!original) return [""]; // 空内容直接返回空
    // 正则匹配提取引号内前缀后的名字
    const match = original.match(/^"SUIVI DU TEMPS_(.*)"$/);
    return match ? [match[1]] : [""]; // 匹配成功返回名字,否则返回空
  });
  
  // 将处理后的数据写入第5列
  COLsheet.getRange(5, 5, processedNames.length, 1).setValues(processedNames);

  // 保留原有空行填充逻辑
  var name = COLsheet.getRange(5, 5, COLsheet.getLastRow() - 1, 1).getValues();
  for (let i = 1; i < name.length; i++) {
    if (name[i][0] === "") name[i][0] = name[i-1][0];
  }
  COLsheet.getRange(5, 5, name.length, 1).setValues(name);
}

关键修改说明

  • 使用map遍历原始数据,对每行内容做处理:
    • 正则表达式/^"SUIVI DU TEMPS_(.*)"$/精准匹配目标格式,捕获SUIVI DU TEMPS_之后、末尾引号之前的内容。
    • 空内容或不匹配格式的行直接返回空字符串,避免产生错误。
  • 处理后的数组直接写入第5列,再执行原有的空行填充逻辑,即可得到预期结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 01:37:29