Google Script实现发票工作表复制重命名并移至末尾及脚本合并需求
合并脚本实现发票复制、重命名并移至末尾
直接使用以下合并后的脚本,一次性完成所有需求:
function CreateInvoice() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const activeSheet = ss.getActiveSheet(); // 复制当前活动工作表(发票模板) const newSheet = ss.duplicateActiveSheet(); // 复制格式与静态值,避免公式联动 const dataRange = newSheet.getDataRange(); dataRange.copyTo(dataRange, {formatOnly: true}); dataRange.copyTo(dataRange, {contentsOnly: true}); // 提取客户名称与发票编号 const customerName = activeSheet.getRange("B12").getValue(); const invoiceNumber = activeSheet.getRange("G12").getValue(); // 按规则重命名工作表 newSheet.setName(`${customerName} ${invoiceNumber}`); // 将新工作表移至所有表的末尾 ss.moveSheet(newSheet, ss.getNumSheets()); }
关键步骤说明:
- 复制工作表:通过
duplicateActiveSheet()快速复制当前发票模板,生成新工作表对象。 - 固化内容:两次调用
copyTo,先保留原格式,再将公式转为静态值,确保副本数据独立不联动。 - 提取命名数据:从原模板的B12(客户名称)和G12(发票编号)获取值,保证命名对应当前要生成的发票。
- 重命名与移动:按「客户名称+空格+发票编号」规则设置新表名称,再通过
moveSheet()将其移至工作表列表末尾。
使用方式:
- 删除原来的
Dupewithvaluesonly和MovetoEnd函数。 - 将上述脚本粘贴到Google Apps Script编辑器中。
- 给「创建发票」按钮绑定
CreateInvoice函数即可。
内容的提问来源于stack exchange,提问作者etnevel
相关产品推荐
相关产品推荐

