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

如何通过Apps Script将Google Sheet指定列数据导入至其他谷歌表格文件

解决方案

你可以直接使用以下Apps Script脚本实现按SKU匹配,跨Google Sheet导入指定列数据的需求,整体逻辑为以SKU为唯一匹配键,批量读取源表数据后匹配写入目标表,运行效率高。

前置准备

  • 获取源表格(文件A)的ID:打开文件A后,URL中d/和/edit之间的字符串就是文件ID
  • 打开目标表格(文件B),点击顶部菜单栏「扩展程序」-「Apps Script」进入脚本编辑器,删除编辑器内默认的空白代码

可用脚本代码

function importDataBySku() {
  // 请替换为你自己的源文件A的ID
  const SOURCE_SPREADSHEET_ID = '替换为文件A的实际ID';
  const SOURCE_SHEET_NAME = 'Sheet1';
  const TARGET_SHEET_NAME = 'Sheet2';

  // 读取源表所有数据
  const sourceSs = SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID);
  const sourceSheet = sourceSs.getSheetByName(SOURCE_SHEET_NAME);
  const sourceData = sourceSheet.getDataRange().getValues();
  const sourceSkuMap = {};

  // 跳过表头,将SKU作为键存储对应A、C、D列数据
  // 注:数组索引从0开始计数,B列对应索引1,A列对应0,C列对应2,D列对应3,可按需调整
  for (let i = 1; i < sourceData.length; i++) {
    const currentSku = sourceData[i][1];
    if (currentSku) {
      sourceSkuMap[currentSku] = [
        sourceData[i][0], // 源表A列值
        sourceData[i][2], // 源表C列值
        sourceData[i][3]  // 源表D列值
      ];
    }
  }

  // 读取目标表数据
  const targetSs = SpreadsheetApp.getActiveSpreadsheet();
  const targetSheet = targetSs.getSheetByName(TARGET_SHEET_NAME);
  const targetData = targetSheet.getDataRange().getValues();

  // 遍历目标表匹配SKU并赋值
  for (let i = 1; i < targetData.length; i++) {
    const currentSku = targetData[i][1];
    if (currentSku && sourceSkuMap[currentSku]) {
      // 以下为写入目标表的列位置,可按需调整索引
      targetData[i][0] = sourceSkuMap[currentSku][0]; // 写入目标表A列
      targetData[i][2] = sourceSkuMap[currentSku][1]; // 写入目标表C列
      targetData[i][3] = sourceSkuMap[currentSku][2]; // 写入目标表D列
    }
  }

  // 批量写入所有匹配后的数据
  targetSheet.getDataRange().setValues(targetData);
}

操作步骤

  • 将代码中占位的替换为文件A的实际ID修改为你自己的文件A ID,若源表/目标表的表名不是Sheet1、Sheet2,也对应修改代码中的表名字段
  • 点击编辑器顶部的保存按钮,给项目任意命名,首次运行需要完成账号授权:遇到未验证应用提示时,点击「高级」-「前往[你的项目名]」即可完成授权
  • 选中importDataBySku函数,点击运行按钮,回到文件B的Sheet2即可看到匹配完成的结果

补充说明

  • 若需要自动同步数据,可在Apps Script编辑器左侧点击「触发器」按钮,添加触发器:选择importDataBySku函数,触发条件可设置为时间驱动(比如每日同步一次)或表格更新时触发
  • 若你的SKU列、需要导入的列位置和默认逻辑不同,只需按代码注释调整对应的数组索引即可
  • 若表格前N行都是表头,只需将循环的起始值i=1修改为i=N即可跳过对应行数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 18:15:04