如何使用Google App Script重命名表单响应目标工作表
解决方案
先修正你脚本里的两处问题,再实现响应工作表的自定义命名:
- 你定义的问题数组是
myQuestions,但循环里误用了未声明的pertanyaanKu;另外getValues()返回的是二维数组,需要取[i][0]才能拿到单个问题文本。 - 设置表单响应目标后,要定位到刚创建的响应工作表,再修改它的名称。
修改后的完整代码
function generateForm() { // 修正原函数名拼写错误:genarate → generate var ss = SpreadsheetApp.getActive(); var sheet = ss.getSheetByName('CONSUMEN DATA'); var rowNumber = (sheet.getDataRange().getNumRows()) - 3; var myQuestions = sheet.getRange(5, 2, rowNumber, 1).getValues(); var form = FormApp.create('CUSTOMER BILL'); const formTitle = 'BILL REPORT'; form.setTitle(formTitle) .setDescription('Fill with customer bill :') .setAllowResponseEdits(true) .setAcceptingResponses(true); // 修正变量名与二维数组取值逻辑 for(var i = 0; i < rowNumber; i++){ var addItem = form.addTextItem(); addItem.setTitle(myQuestions[i][0]); } // 设置表单响应目标到当前表格 form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); // 重命名响应工作表为"CUSTOMER BILL" var allSheets = ss.getSheets(); // 表单响应表默认是最后新增的工作表,直接取最后一项 var responseSheet = allSheets[allSheets.length - 1]; responseSheet.setName('CUSTOMER BILL'); }
关键细节说明
- 函数名修正:避免拼写错误导致的调用问题;
- 数组取值:
getValues()返回二维结构,必须通过[i][0]提取单行单元格的文本内容; - 工作表定位:设置响应目标后,新的响应表会被添加到表格的最后,直接取所有工作表的最后一项即可定位到目标表。
可选:避免同名工作表冲突
如果担心已有同名工作表导致报错,可以提前检查并处理:
var targetSheetName = 'CUSTOMER BILL'; // 检查是否存在同名表,存在则删除(可根据需求改为提示或跳过) var existingSheet = ss.getSheetByName(targetSheetName); if(existingSheet) { ss.deleteSheet(existingSheet); } // 再执行设置响应目标与重命名操作 form.setDestination(FormApp.DestinationType.SPREADSHEET, ss.getId()); var responseSheet = ss.getSheets()[ss.getSheets().length - 1]; responseSheet.setName(targetSheetName);
内容的提问来源于stack exchange,提问作者PSAB Plalangan
相关产品推荐
相关产品推荐

