Google Sheets脚本需求:表单提交时忽略A-J列写入K列
解决Google Apps脚本写入K列跳过有公式行的问题
问题根源
原脚本依赖dstSheet.getLastRow()确定写入位置,但getLastRow()会把包含公式(哪怕公式返回空值)的行判定为非空行,导致脚本跳过「Responses」工作表中A-J列有公式的行,转而写入下一行。
修改后的脚本
function onSubmit(e) { const range = e.range; const srcSheet = range.getSheet(); const dstSheet = e.source.getSheetByName("Responses"); const srcRange = srcSheet.getRange(range.rowStart, 1, 1, srcSheet.getLastColumn()); // 直接使用表单提交的行号定位到Responses工作表的对应行K列 const dstRange = dstSheet.getRange(range.rowStart, 11); srcRange.copyTo(dstRange, {contentOnly: true}); }
改动说明
- 替换目标行定位逻辑:放弃
getLastRow(),改用表单触发事件返回的range.rowStart(即「Form Responses 1」中新增提交数据的行号),直接定位「Responses」工作表对应行的第11列(K列)。 - 无论「Responses」的A-J列是否有公式或内容,都会将提交数据写入对应行的K列,完全忽略A-J列的状态。
内容的提问来源于stack exchange,提问作者Matthew Boucher
相关产品推荐
相关产品推荐

