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

如何修改Google Apps Script脚本,避免.map()覆盖表格B、C列数据

保留目标表格B、C列数据的Google Apps Script修改方案

原脚本运行时会清空目标表格dstSheet的B、C列数据,核心问题出在处理目标数据的.map()方法里——原代码把B、C列强制设为null。下面是修改方案:

原脚本代码

function dorozliczenia() {
  
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = ss.getSheetByName("arkusz 1");
  const dstSS = SpreadsheetApp.openById("1bjqauqiyEzUkECaxqswRmOQPYWydpSAvLf97t5ovbXQ");
  const dstSheet = dstSS.getSheetByName("arkusz 1");

  const obj = Object.fromEntries(srcSheet.getRange("A2:C" + srcSheet.getLastRow()).getValues().map(([a, , c]) => [c, a]));
  const dstRange = dstSheet.getRange("A2:D" + dstSheet.getLastRow());
  const values = dstRange.getValues().map(([, , , a]) => [obj[a] ? true : false,null ,null , a]);
  dstRange.setValues(values);
}

修改后的脚本代码

function dorozliczenia() {
  
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  const srcSheet = ss.getSheetByName("arkusz 1");
  const dstSS = SpreadsheetApp.openById("1bjqauqiyEzUkECaxqswRmOQPYWydpSAvLf97t5ovbXQ");
  const dstSheet = dstSS.getSheetByName("arkusz 1");

  const obj = Object.fromEntries(srcSheet.getRange("A2:C" + srcSheet.getLastRow()).getValues().map(([a, , c]) => [c, a]));
  const dstRange = dstSheet.getRange("A2:D" + dstSheet.getLastRow());
  // 修改map回调,保留原B、C列的值
  const values = dstRange.getValues().map(([, b, c, a]) => [obj[a] ? true : false, b, c, a]);
  dstRange.setValues(values);
}

修改说明

  • 原代码中.map(([, , , a]) => ...)只解构了D列的值(a),把B、C列的位置留空,返回时设为null,导致这两列被清空。
  • 修改后改为.map(([, b, c, a]) => ...),直接获取原B列(b)和C列(c)的原有值,返回数组时复用这两个值,从而保留B、C列的数据不变。

内容的提问来源于stack exchange,提问作者Michał Kostrzewa

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 09:35:25