Google Sheets Apps Script需求:基于活动行填充CC表单
解决方案
原代码问题说明
var CC = spreadsheetDocument.getSheetByName('CC')();存在语法错误,多了冗余的调用括号,正确写法是getSheetByName('CC')- 仅处理了
Name字段,未覆盖需求中的所有目标命名范围 - 未基于活动行整行数据提取,而是直接复制活动单元格范围
修正后的代码
function FillOutForm() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const srSheet = ss.getSheetByName('Service Requests'); const ccSheet = ss.getSheetByName('CC'); // 获取活动单元格所在的行号(行号从1开始计数) const activeRow = srSheet.getActiveCell().getRow(); // ---------- 请根据实际列位置调整以下映射关系 ---------- // 示例:假设Service Requests中各字段对应的列(A=1, B=2...) const fieldMap = { Name: 1, // Name在A列 Address: 2, // Address在B列 Date: 3, // Date在C列 Phone: 4, // Phone在D列 Town: 5, // Town在E列 WifiName: 6, // WifiName在F列 WifiPassword: 7, // WifiPassword在G列 Notes: 8 // Notes在H列 }; // 遍历所有需要填充的命名范围,赋值对应行的单元格数据 Object.keys(fieldMap).forEach(fieldName => { const sourceValue = srSheet.getRange(activeRow, fieldMap[fieldName]).getValue(); ccSheet.getRange(fieldName).setValue(sourceValue); }); }
使用说明
- 调整
fieldMap中的列号,确保和你Service Requests工作表中各字段的实际列位置完全一致 - 确认CC工作表中的命名范围(Address、Date、Name等)已正确创建,且名称与代码中的
fieldMap键完全匹配(大小写敏感) - 在
Service Requests工作表中选中目标行的任意单元格,运行FillOutForm函数,即可将该行对应字段填充到CC的表单中
内容的提问来源于stack exchange,提问作者Kevin
相关产品推荐
相关产品推荐

