【发布时间】:2015-09-26 00:14:10
【问题描述】:
我在 Google 新表格的保护方面遇到了一些奇怪的问题。我创建了一个我正在经历的演示。工作表的 URL 是:
https://docs.google.com/spreadsheets/d/1IbAiqU6oN48Ql_wM3TeRl9TqG6DFsBKtc86jElv0Kbo/edit?usp=sharing
我已使用“数据 - 受保护的工作表和范围...”下的“工作表保护(某些单元格除外)”方法保护工作表以供所有者编辑,但第 5 到 7 行除外。
我还有一个简单的用户功能菜单,它在打开时被调用,它包含一个简单的 Google Apps 脚本来插入给定数量的行(代码如下)。
当其他用户访问工作表时会发生以下情况:
- 基本保护似乎起作用了。用户只能编辑第 5 到 7 行。
- 插入行功能(在用户功能菜单下选择)会产生“服务错误:电子表格”。
- 如果用户尝试删除 3 个未受保护的行中的任何一个,则会显示消息“无法保存您的更改。复制任何最近的更改,然后恢复到较早的版本...”出现在屏幕顶部的红色框中。点击“恢复到较早版本...”链接可撤销删除操作。
如果我删除所有保护,那么用户的一切都是 100% - 插入行功能 - 删除行等。
我在这里复制的功能与我多年来在旧工作表中使用的功能非常相似,没有任何问题(即保护电子表格的某些区域不被共享用户编辑)。
我必须补充一下,我几天前发布了关于插入行功能不起作用的问题。
这是我的功能代码:
function onOpen() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var menuEntries = [{name: "Insert Rows", functionName: "insertRows"}];
ss.addMenu("User Functions", menuEntries);
}
function insertRows() {
var numRows = Browser.inputBox('Insert Rows', 'Enter the number of rows to insert', Browser.Buttons.OK);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
var curs = sheet.getActiveCell();
var cursRow = curs.getRow();
var cursLastCol = sheet.getLastColumn();
sheet.insertRowsAfter(cursRow, numRows);
var source_range = sheet.getRange(cursRow,1,1,cursLastCol);
var target_range = sheet.getRange(cursRow+1,1,numRows);
source_range.copyTo(target_range);
Browser.msgBox('Insert Rows', +numRows+' rows successfully inserted.', Browser.Buttons.OK);
}
任何人都可以帮助解决这个问题。我有一些大客户,我为这些客户构建了复杂的在线电子表格,现在在新表格下无法正常工作。
【问题讨论】:
-
有没有人可以帮助解决这个问题。我越来越绝望了……
-
看起来你在这里提交了一个错误,虽然信息少了很多:code.google.com/p/google-apps-script-issues/issues/…。通常最好将问题隔离到重现问题的小案例中,而不是包含整个代码。
-
跟进问题跟踪器,因为这是报告错误的最佳场所。
标签: google-apps-script google-sheets