阻止用户在共享的Google电子表格中创建新工作表 [英] Prevent users from creating new sheets in a shared google spreadsheet

查看:24
本文介绍了阻止用户在共享的Google电子表格中创建新工作表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经创建了一个电子表格,除了一个单元格之外,所有的工作表都被保护不能编辑,用户应该在其中输入搜索值,这将过滤工作表。我在启用编辑的情况下共享了电子表格,但这也允许用户创建新的工作表,这是我想要阻止的。

也许我使用的不是实现我想要的最优方式,因此欢迎您的建议。我看到人们建议在类似的用例中使用表单,但我不知道如何将他们的调查功能应用于我的需求。

编辑:这是共享电子表格:https://docs.google.com/spreadsheets/d/1C4mrBWJxPLrFQ4bp82UA2ICOr1e6ER47wF7YuElyoZg/edit?usp=sharing

推荐答案

您可以使用脚本删除每个新创建的(不是由所有者创建的)工作表。下面是这样一个脚本的示例:

// Deletes any tab named "SheetN" where N is a number 
function DeleteNewSheets() {
  var newSheetName = /^Sheet[d]+$/
  var ssdoc = SpreadsheetApp.getActiveSpreadsheet();
  var sheets = ssdoc.getSheets();
  
  // is the change made by the owner ?
  if (Session.getActiveUser().getEmail() == ssdoc.getOwner().getEmail()) {
    return;
  }
  // if not the owner, delete all unauthorised sheets
  for (var i = 0; i < sheets.length; i++) {
    if (newSheetName.test(sheets[i].getName())) {
      ssdoc.deleteSheet(sheets[i])
    }
  }
}

然后设置触发器,在更改(如创建工作表)发生时运行此函数DeleteNewSheets

注意:如果英语不是文档语言,则应将正则表达式/^Sheet[d]+$/更改为/^Feuille [d]+$/

这篇关于阻止用户在共享的Google电子表格中创建新工作表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆