Google Sheets表单提交触发复制行时跳过C列的脚本调整咨询
修改后可直接使用的代码
function CopyToAnotherSheet() { // 10秒延迟,确保表单提交的关联数据(如Google Doc URL)生成完成后再执行 Utilities.sleep(10000); // 获取源表格及最后一行数据 var source = SpreadsheetApp.getActiveSpreadsheet(); var source_sheet = source.getActiveSheet(); var lastRow = source_sheet.getLastRow(); var lastColumn = source_sheet.getLastColumn(); var lastRowOfData = source_sheet.getRange(lastRow, 1, 1, lastColumn).getValues(); // 生成一维行数组,修复原代码单元格含逗号时拆分错误的问题 var oneD_array = lastRowOfData[0]; // 读取C列值用于判断目标同步位置,先取值再删除C列数据 var cellValue = source_sheet.getRange(lastRow,3).getValue(); // 删除C列对应数据:数组索引从0开始,C列对应索引2,删除1个元素 oneD_array.splice(2, 1); // 同步到第一个目标表格 if ( cellValue == "First" ) { var target = SpreadsheetApp.openById("xxxyyyzzz"); var target_sheet = target.getSheetByName("First"); target_sheet.appendRow(oneD_array); } // 同步到第二个目标表格 if ( cellValue == "Second" ) { var target = SpreadsheetApp.openById("aabbcc"); var target_sheet = target.getSheetByName("Second"); target_sheet.appendRow(oneD_array); } }
核心修改说明
- 优化原一维数组生成逻辑:原代码使用
join().split(",")处理行数据,如果单元格内容本身包含逗号会导致数据错位,直接取lastRowOfData[0]即可得到正确的一维行数据 - 新增跳过C列逻辑:
oneD_array.splice(2, 1)表示从数组索引2(对应表格第三列即C列)的位置删除1个元素,写入目标表格时就会自动跳过C列数据 - 优化C列取值逻辑:单个单元格直接用
getValue()读取值,避免原代码getValues()返回二维数组带来的判断问题
内容的提问来源于stack exchange,提问作者Jump_Ace
相关产品推荐
相关产品推荐

