无法创建绑定到Google Sheets的容器脚本求助
Google Sheets绑定脚本创建失败问题解决
问题说明
我一直在开发Google Sheets脚本,但现在无法创建绑定到表格的容器脚本——不管是新建表格还是已有脚本的表格,保存按钮只允许将脚本保存到云端硬盘,导致我没法访问工作必需的SpreadsheetApp服务。
之前正常运行的归档脚本
function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu('Actions'); menu.addItem('Clone - Archive Selected Rows', 'archiveSelectedRowsClone') .addItem('Veg - Archive Selected Rows', 'archiveSelectedRowsVeg') .addItem('Flower - Archive Selected Rows', 'archiveSelectedRowsFlower') .addItem('Mom - Archive Selected Rows', 'archiveSelectedRowsMom') .addToUi(); } function archiveSelectedRowsClone() { archiveSelectedRows('Clone', 'Clone Archive'); } function archiveSelectedRowsVeg() { archiveSelectedRows('Veg','Veg Archive'); } function archiveSelectedRowsFlower() { archiveSelectedRows('Flower', 'Flower Archive'); } function archiveSelectedRowsMom() { archiveSelectedRows('Mom Room/Z10', 'Mom Archive') } function archiveSelectedRows(sourceSheetName, destinationSheetName) { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sourceSheet = ss.getSheetByName(sourceSheetName); var destinationSheet = ss.getSheetByName(destinationSheetName); // 获取选中区域 var selectedRange = sourceSheet.getActiveRange(); // 获取目标工作表的最后一行 var lastRow = destinationSheet.getLastRow(); // 复制格式到目标工作表 selectedRange.copyTo(destinationSheet.getRange(lastRow + 1, 1), {contentsOnly: false}); // 复制显示值到目标工作表,批量设置 var targetRange = destinationSheet.getRange(lastRow + 1, 1, selectedRange.getNumRows(), selectedRange.getNumColumns()); var values = selectedRange.getDisplayValues(); targetRange.setValues(values); }
解决步骤
- 从表格内打开脚本编辑器:在Google Sheets顶部菜单栏选择「扩展程序」→「Apps Script」,不要直接从云端硬盘新建脚本。
- 修改脚本项目名称:如果编辑器标题栏显示「未命名项目」,点击标题设置名称,此时会自动关联当前表格,保存时不再强制存到云端硬盘。
- 重置浏览器环境:清空浏览器缓存,或用无痕模式打开表格后再进入脚本编辑器,排除缓存导致的异常。
- 检查账号权限:确保当前账号对目标表格拥有编辑权限,且未被限制使用Apps Script服务。
- 手动关联脚本到表格:若脚本已存到云端硬盘,打开脚本后点击左侧「项目设置」,勾选「显示"appsscript.json"清单文件」,打开清单文件,在
oauthScopes上方添加"container": "spreadsheet",保存后重新打开脚本即可关联表格。
内容的提问来源于stack exchange,提问作者Kijana Peterson
相关产品推荐
相关产品推荐

