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

如何为Google Sheet导入的CSV水果库存数据自动添加每日汇总行

实现方案(两种可选,按需选择即可)

方案1:公式生成带汇总的结果表(无需改动IMPORTDATA原始区域,推荐)

不需要修改原始IMPORTDATA的拉取逻辑,单独找空白区域(建议用新的Sheet页)输入公式即可自动生成带每日汇总的完整表格,全程不用手动操作:

  • 先把原始拉取的数据放在单独的Sheet,比如命名为「原始数据」,拉取公式=IMPORTDATA("https://xxx.xxx/fruits.csv")放在该Sheet的A1单元格
  • 在新Sheet的A1输入以下公式:
=SORT(
  {
    '原始数据'!A1:D;
    ARRAYFORMULA(
      QUERY(
        '原始数据'!A2:D,
        "SELECT A,'TOTAL',SUM(C),SUM(D) WHERE A IS NOT NULL GROUP BY A LABEL 'TOTAL' '', SUM(C) '', SUM(D) ''",
        0
      )
    )
  },
  1,TRUE,2,FALSE
)
  • 逻辑说明:先把原始数据和按日期分组统计的汇总行合并,再按日期升序、水果名列降序排序,就能自动把TOTAL行放在对应日期的所有明细下方,完全匹配你要的汇总效果。
  • 可以搭配条件格式使用:设置当B列值为TOTAL时自动加粗、填充背景色,不需要手动调整格式。

方案2:Apps Script自动插入汇总行(适合需要直接在原始数据区域加行的场景)

如果必须在IMPORTDATA拉取的原始区域加汇总行,按以下步骤操作:

  1. 点击Google Sheet顶部菜单栏「扩展程序」-「Apps Script」打开脚本编辑器
  2. 把默认代码替换为以下内容,注意替换代码里的Sheet名、IMPORTDATA地址为你自己的实际内容:
function addDailyTotal() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('你的原始数据Sheet名');
  const data = sheet.getDataRange().getValues();
  // 先清空之前插入的汇总行,避免重复
  for (let i = data.length - 1; i > 1; i--) {
    if (data[i][1] === 'TOTAL') {
      sheet.deleteRow(i + 1);
    }
  }
  // 重新拉取最新数据
  SpreadsheetApp.getActiveSpreadsheet().getRange('A1').setFormula('=IMPORTDATA("https://xxx.xxx/fruits.csv")');
  SpreadsheetApp.flush();
  const newData = sheet.getDataRange().getValues();
  let currentDate = newData[1][0];
  let invSum = 0;
  let rotSum = 0;
  // 遍历插入汇总行
  for (let i = 1; i < newData.length; i++) {
    if (newData[i][0] !== currentDate) {
      sheet.insertRowAfter(i);
      sheet.getRange(i + 1, 1).setValue(currentDate);
      sheet.getRange(i + 1, 2).setValue('TOTAL');
      sheet.getRange(i + 1, 3).setValue(invSum);
      sheet.getRange(i + 1, 4).setValue(rotSum);
      currentDate = newData[i][0];
      invSum = 0;
      rotSum = 0;
    }
    invSum += Number(newData[i][2]);
    rotSum += Number(newData[i][3]);
  }
  // 给最后一天加汇总行
  sheet.insertRowAfter(newData.length);
  sheet.getRange(newData.length + 1, 1).setValue(currentDate);
  sheet.getRange(newData.length + 1, 2).setValue('TOTAL');
  sheet.getRange(newData.length + 1, 3).setValue(invSum);
  sheet.getRange(newData.length + 1, 4).setValue(rotSum);
}
  1. 保存脚本,运行一次完成授权,之后可以设置触发器:选择「时间驱动」触发器,设置每日固定时间运行,或者设置为表格变更时触发,就能自动同步拉取数据+插入汇总行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:24:04