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

Google Sheets Apps Script日期比较问题:筛选逾期客户同步到未付账单表

修正后可运行的完整代码
function Neplacena2Novi() {
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 对应三个工作表,保留你原来的表名
  const customerSheet = ss.getSheetByName("Podaci o polaznicima"); // 客户信息表
  const paySheet = ss.getSheetByName("Uplate novoupisani"); // 付款记录表
  const targetSheet = ss.getSheetByName("Neplaceni racuni"); // 未付账单目标表
  // 获取你定义的命名范围:二期款支付日期列
  const secondPayRange = ss.getRangeByName("Druga rata");

  const startRow = 3; // 你原来定义的起始行,数据从第3行开始
  const maxRow = paySheet.getLastRow(); // 取付款表的最后有数据的行
  const today = new Date();
  today.setHours(0, 0, 0, 0); // 去掉时分秒,避免时间部分影响天数计算
  const DAY_MS = 1000 * 60 * 60 * 24; // 一天的毫秒数
  const matchData = []; // 存储符合条件的客户数据

  // 遍历所有付款记录行
  for (let i = startRow; i <= maxRow; i++) {
    // 获取当前行的二期款支付日期
    const secondPayDate = secondPayRange.getCell(i, 1).getValue();
    // 跳过没有填二期款日期的行
    if (!secondPayDate) continue;
    // 统一日期格式去掉时分秒
    const payDate = new Date(secondPayDate);
    payDate.setHours(0, 0, 0, 0);
    // 计算今天和二期款支付日期的差值,单位天
    const diffDays = Math.floor((today - payDate) / DAY_MS);
    // 符合大于45天的条件,取对应行的客户信息(ID、姓名、邮箱、联系方式共4列)
    if (diffDays > 45) {
      const customerInfo = customerSheet.getRange(i, 1, 1, 4).getValues()[0];
      matchData.push(customerInfo);
    }
  }

  // 写入目标表前先清空原有数据,避免旧数据干扰
  const targetStartRow = 3; // 目标表从第3行开始写,和你原来的设置一致
  if(targetSheet.getLastRow() >= targetStartRow) {
    targetSheet.getRange(targetStartRow, 1, targetSheet.getLastRow() - targetStartRow + 1, 4).clearContent();
  }
  // 有符合条件的数据才写入
  if (matchData.length > 0) {
    targetSheet.getRange(targetStartRow, 1, matchData.length, 4).setValues(matchData);
  }

  // 保留你原来的提示
  const ui = SpreadsheetApp.getUi();
  ui.alert("Odredili ste lica koja treba da se pozovu.");
}

function DugmeDodajKlijenta (){
  const ui = SpreadsheetApp.getUi();
  // 你可以在这里补充添加客户的逻辑
}
核心修改说明
  • 修复了原代码的语法错误:包括for循环格式错误、冗余的嵌套函数定义、括号不匹配问题,解决代码无法执行的问题
  • 调整了日期计算逻辑:使用new Date()获取当前日期,换算成和二期款日期的天数差,实现你要的「今日日期减去二期款支付日期大于45天」的判断条件
  • 优化了数据对应逻辑:默认付款表和客户信息表的同一行对应同一个客户的信息,你可以根据实际数据的行对应规则调整startRow参数
  • 优化了写入逻辑:只收集符合条件的客户数据再批量写入,写入前先清空目标表原有旧数据,避免冗余数据
注意事项

如果你的客户信息表和付款表的行不是一一对应的,需要先通过客户ID做关联匹配再取值,你可以根据实际数据结构调整对应部分的逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 09:06:04