Google Apps Script如何引用同一工作簿其他工作表中的值?
Google Apps Script 同工作簿跨表取值方法
你可以直接通过SpreadsheetApp内置服务读取同工作簿下其他工作表的内容,补全变量映射逻辑,分两种常见场景处理:
- 固定配置场景:
insertion_order_number、month为全局固定值,存放在某张工作表的固定单元格 - 匹配映射场景:两个字段按维度(如客户、广告主)分行存储,需要和本次表单提交的字段匹配后取对应值
固定配置场景实现代码
如果两个值是固定配置项(例如存放在名为「系统配置」的工作表A2、B2单元格),直接读取指定单元格值即可:
// 获取当前表单绑定的工作簿对象 const activeSpreadsheet = e.source; // 替换为你存放配置字段的实际工作表名称 const configSheet = activeSpreadsheet.getSheetByName("系统配置"); //e.values is an array of form values var timestamp = e.values[0]; var client = e.values[1]; var advertiser = e.values[2]; var total_spend_amount = e.values[3]; var campaign_start_date = e.values[4]; // 替换为两个字段实际所在的单元格位置 var insertion_order_number = configSheet.getRange("A2").getValue(); var month = configSheet.getRange("B2").getValue();
匹配映射场景实现代码
如果两个值需要和本次提交的客户、广告主等信息匹配后取值,先读取目标表全量数据再遍历匹配即可:
const activeSpreadsheet = e.source; // 替换为存放映射字段的实际工作表名称 const mappingSheet = activeSpreadsheet.getSheetByName("订单映射表"); // 读取该工作表所有有效数据,返回二维数组,行、列索引均从0开始计数 const mappingData = mappingSheet.getDataRange().getValues(); //e.values is an array of form values var timestamp = e.values[0]; var client = e.values[1]; var advertiser = e.values[2]; var total_spend_amount = e.values[3]; var campaign_start_date = e.values[4]; var insertion_order_number = ""; var month = ""; // 遍历映射表数据匹配对应值,从索引1开始跳过表头行 for (let rowIndex = 1; rowIndex < mappingData.length; rowIndex++) { const currentRowClient = mappingData[rowIndex][0]; // 示例:映射表第1列存client名称,按实际列位置修改 if (currentRowClient === client) { insertion_order_number = mappingData[rowIndex][1]; // 示例:映射表第2列存订单号,按实际列位置修改 month = mappingData[rowIndex][2]; // 示例:映射表第3列存月份,按实际列位置修改 break; // 匹配到目标行后终止循环 } }
注意:使用时需要把代码中的工作表名称、单元格位置、列索引替换为你自己表格中的实际配置,列索引从0开始计数。
内容的提问来源于stack exchange,提问作者Fudgeeman
相关产品推荐
相关产品推荐

