对话框textarea数据导入Google Spreadsheet时enterName2函数失效求助
问题定位
- 核心错误1:
enterName2中选取单元格范围的getRange参数错误。你需要写入标题、题目内容、4个选项共6列数据,但当前代码sh.getRange(Number(title)+1,1,1,3)仅选中了从第1列开始的3列,完全没有覆盖到存放选项B/C/D的第4-6列。 - 核心错误2:
setFormulas传入的公式数组和选中范围不匹配,且嵌套if(column())的逻辑冗余易错。你完全不需要通过判断列号赋值,直接按列顺序给对应位置传公式即可。 - 额外优化点:两个服务端函数中都重复声明了
title变量覆盖了传入的参数,属于不规范写法,建议修改避免后续出隐性bug。
修复后的服务端gs代码
function enterName1(title,content,formula,unit) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName('tests'); // 去掉多余的title变量声明,避免覆盖入参 sh.getRange(Number(title)+1,1,1,3).setFormulas([[title, '="'+content+'"', '=round('+formula+';3)'+'&" '+unit+'.']]); } function enterName2(title,content,option1,option2,option3,option4){ var ss = SpreadsheetApp.getActiveSpreadsheet(); var sh = ss.getSheetByName('tests'); // 修改getRange列数为6,覆盖所有需要写入的列 // 直接按列顺序对应四个选项,去掉冗余的column判断逻辑 sh.getRange(Number(title)+1,1,1,6).setFormulas([ [ title, '="'+content+'"', '="'+option1+'"', '="'+option2+'"', '="'+option3+'"', '="'+option4+'"' ] ]); }
内容的提问来源于stack exchange,提问作者Đình Tấn Nguyễn
相关产品推荐
相关产品推荐

