当前位置: 首页 > 知识库问答 >
问题:

谷歌新表单保护问题

笪波鸿
2023-03-14

我在谷歌新表单中遇到一些奇怪的保护问题。我已经创建了一个我正在经历的演示。工作表的URL为:

https://docs.google.com/spreadsheets/d/1IbAiqU6oN48Ql_wM3TeRl9TqG6DFsBKtc86jElv0Kbo/edit?usp=sharing

我已使用“数据保护的工作表和范围…”下的“除某些单元格外的工作表保护”方法,仅为所有者编辑工作表,第5行至第7行除外

我也有一个简单的用户功能菜单,它在打开时调用,包含一个简单的谷歌应用脚本来插入给定的行数(代码如下)。

当其他用户访问工作表时,会发生以下情况:

  1. 基本的保护措施似乎正在发挥作用。用户只能编辑第5行到第7行
  2. “插入行”功能(在“用户功能”菜单下选择)生成“服务错误:电子表格”
  3. 如果用户试图删除3个未受保护的行中的任何一行,则消息“无法保存您的更改”。复制任何最近的更改,然后恢复到早期版本…'显示在屏幕顶部的红色框中。单击“还原到早期版本…”链接反转删除

如果我删除了所有的保护,那么用户的一切都是100%-插入行功能-删除行等。

我在这里复制的功能与我多年来在旧表单中使用的功能非常相似,没有任何问题(即保护电子表格的某些区域不被共享用户编辑)。

我必须补充一点,几天前我发布了关于insert row函数不起作用的问题。

这是我的功能代码:

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);

}

有人能帮忙吗。我有一些大客户,我为他们制作了复杂的在线电子表格,但现在在新的表格下无法正常工作。

共有1个答案

唐弘和
2023-03-14

尝试为onOpen()设置项目触发器,而不是使用简单的onOpen()。然后它以您的权限而不是当前用户的权限运行。只需单击资源/当前项目触发器并添加一个新触发器。

 类似资料:
  • 我有一个正在写的剧本,需要一些帮助。 首先,我的脚本应该如何工作。 脚本:用户填写谷歌表单并点击提交。提交后,我的脚本运行并从google工作表中读取我在工作表中操作的一系列数据单元。然后将数据单元格格式化为字符串,并在表单的确认消息中提示。 现在问题来了。 问题:当我提交我对表格的回复时,从表格到表格的一切都很好。当我手动运行代码时,代码工作正常。当我提交表单响应时,事件历史记录会显示触发器并说

  • 此函数工作正常。当当前工作表不是Google表单响应工作表时。我正在使用(每分钟)触发器 图像:沙子数据(主数据)表至(共享数据1)表 我正在寻找一个,当用户提交的谷歌表格的状态是(支付),数据应该在第二页,这是(shareData1) 这里的问题是,当我使用谷歌表单响应表时,这个函数将不再工作。它显示了一个错误。错误图像 在降级的错误图像中,我手动运行此函数,相同的错误显示在AppScript面

  • 我正在使用从http://script.google.com.访问的Google Apps Script编辑器创建脚本,我想使用https://developers.google.com/chart/interactive/docs/quick_start.中记录的较新的图表服务。 [html [script type=“text/javascript”src=”https://www.googl

  • 我有一个谷歌表单的问题。我最近创建了一个Google表单,允许人们留下反馈。但是,当人们填写表单时,我不希望Google表单上的新行插入下方,我希望该行插入顶部。 我已经尝试使用下面的代码,但是它不起作用。 新行仍然插入底部

  • 我想创建一个动态谷歌表单的边栏,理想情况下是从(谷歌)地图中选择要输入表单的坐标。 从文档和试用版中,我可以创建表单编辑器/设计器的侧栏(https://docs.google.com/forms/d/ID/edit),而不是活的形式本身(https://docs.google.com/forms/d/ID/viewform).表单对于文档和工作表应用程序是不同的,存在这两种视图。 例如: 第一个

  • 我正试图用crsf令牌保护我的Zend表单。如果我在表单中添加token元素,它总是会向我返回notEmpty错误消息。我做错什么了吗?谢谢 控制器中的操作: 在我看来,我呈现表单并转储错误消息 每次验证表单后,我都会收到如下错误消息: 如果我给元素填充了正确的值,最后一个错误总是token-NotEmpty,因此我的表单永远无效。