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

Google Apps Script中基于发票号数组创建带id属性的发票对象

批量发票对象生成实现方案

核心逻辑为遍历去重后的发票号数组,从已拉取的全量发票明细中匹配同一发票号对应的公共属性,组装为标准发票对象即可。

代码实现与修正

核心发票对象组装函数

补全你现有代码中的fetchInvData函数,实现自动生成发票对象的能力:

function fetchInvData (invoiceIDs) {
  // 存储最终生成的所有发票对象,可根据后续使用场景选择数组或对象格式
  const invoices = []
  invoiceIDs.forEach(invId => {
    // 匹配当前发票号的第一条明细,提取公共字段(同一发票号的公共属性一致,取第一条即可)
    const matchedFirstLine = invoiceData.find(row => row[5] == invId)
    if(!matchedFirstLine) return
    // 组装发票对象,列索引根据你实际表格的字段顺序调整即可
    const invoiceObj = {
      id: invId.toString(), // 发票号赋值给id属性,转字符串避免数字精度异常
      invoiceDate: matchedFirstLine[1], // 示例:第2列为发票日期,修改为你实际的列索引
      customerName: matchedFirstLine[3], // 示例:第4列为客户名称,修改为你实际的列索引
      // 其他需要的发票公共属性都可在此处追加
      lineItems: invoiceData.filter(row => row[5] == invId) // 存储该发票的所有商品明细行,后续生成发票直接使用
    }
    invoices.push(invoiceObj)
  })
  Logger.log(invoices)
  return invoices
}

主逻辑修正

修正你printBulkInvoices函数中未生效的数组转换逻辑,调用组装函数即可拿到发票对象数组:

function printBulkInvoices() {
  logLineItems();
  let todaysInvoices = uniqueInvIDs();
  todaysInvoices.sort();
  // 原map方法未赋值不会修改原数组,需主动接收返回值
  todaysInvoices = todaysInvoices.map(String);
  // 调用函数拿到组装完成的发票对象数组
  const invoiceObjs = fetchInvData(todaysInvoices);
  Logger.log(todaysInvoices);
  // 后续遍历invoiceObjs即可批量生成发票
}

JavaScript对象使用说明

  • 追加属性:可以随时通过对象名.属性名 = 属性值的方式为已生成的发票对象追加新属性,例如invoiceObj.taxAmount = 200
  • 快速检索:如果需要通过发票号快速查询对应对象,可将存储结构改为键值对对象:
    const invoices = {}
    // 遍历中用发票号作为键存储:
    invoices[invId] = invoiceObj
    // 后续查询直接用 invoices['35033817'] 即可拿到对应对象
    
  • 明细处理:同一发票号的所有商品明细已存入lineItems属性,生成发票时直接遍历该属性即可输出所有商品行

其他代码问题修复

你现有logTodaysInvoices函数写入表格时需要将一维数组转为二维数组,否则会报错:

function logTodaysInvoices (invIDArr){
  const writeData = invIDArr.map(id => [id])
  const targetSheet = invDataRepo.getSheetByName('invdata')
  targetSheet.getRange(targetSheet.getLastRow()+1,1,writeData.length,1).setValues(writeData);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:24:05