如何通过App Script获取Google Sheet?遇工作表‘Completion_Codes’未找到错误
解决Google Sheet与Qualtrics连接时的「Sheet 'Completion_Codes' not found」错误
以下是针对该问题的排查和修复方案:
核对工作表名称的精确性
getSheetByName方法对大小写、空格、特殊字符完全敏感。请仔细检查工作表名称:- 确认没有前后隐藏空格(可双击工作表标签,复制名称后粘贴到文本编辑器查看)
- 确保下划线、大小写与脚本中的
"Completion_Codes"完全一致,比如不要写成completion_codes或Completion Codes
直接指定目标表格ID
避免依赖getActiveSpreadsheet()可能带来的混淆(比如打开多个表格时活动表错误),改为通过表格ID直接定位:
将脚本第一行的var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Completion_Codes");替换为:var spreadsheetId = "你的Google表格ID"; // 从表格URL的d/[ID]/部分获取 var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName("Completion_Codes");验证脚本权限
重新运行脚本,触发授权流程,确保脚本拥有访问目标表格的权限。如果之前的授权过期或未正确配置,也可能导致工作表读取失败。修正错误提示(可选但有助于调试)
脚本中未找到工作表时抛出的错误信息与实际问题不符,建议修改为:if (!sheet) { Logger.log('Sheet "Completion_Codes" not found'); throw new Error('Sheet "Completion_Codes" not found'); }
修改后的完整脚本
function doGet() { var spreadsheetId = "你的Google表格ID"; // 替换为实际表格ID var sheet = SpreadsheetApp.openById(spreadsheetId).getSheetByName("Completion_Codes"); if (!sheet) { Logger.log('Sheet "Completion_Codes" not found'); throw new Error('Sheet "Completion_Codes" not found'); } var data = sheet.getDataRange().getValues(); var unusedCodes = []; for (var i = 1; i < data.length; i++) { if (data[i][1] !== 'Yes') { unusedCodes.push(data[i][0]); } } if (unusedCodes.length === 0) { return ContentService.createTextOutput(JSON.stringify({ "completionCode": "No more codes available" })).setMimeType(ContentService.MimeType.JSON); } var randomIndex = Math.floor(Math.random() * unusedCodes.length); var selectedCode = unusedCodes[randomIndex]; for (var i = 1; i < data.length; i++) { if (data[i][0] === selectedCode) { sheet.getRange(i + 1, 2).setValue('Yes'); break; } } return ContentService.createTextOutput(JSON.stringify({ "completionCode": selectedCode })).setMimeType(ContentService.MimeType.JSON); }
内容的提问来源于stack exchange,提问作者RB39
相关产品推荐
相关产品推荐

