阻止用户在共享的 Google 电子表格中创建新工作表

See*_*anc 5 google-docs google-sheets

我创建了一个电子表格,其中除单个单元格之外的所有工作表都受到保护,无法编辑,用户应该在其中输入搜索值,该搜索值会过滤工作表。我共享了启用编辑功能的电子表格,以实现这一点,但这也使用户能够创建新工作表,这是我想阻止的。

也许我没有使用最佳的方式来实现我想要的,所以欢迎提出建议。我看到人们建议在类似的用例中使用表单,但我不知道如何将他们的调查功能应用于我的需求。

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

Kpy*_*pym 5

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

// 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])
    }
  }
}

Run Code Online (Sandbox Code Playgroud)

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

注意:如果英语不是文档语言,您应该更改正则表达式/^Sheet[\d]+$/,例如法语就应该是/^Feuille [\d]+$/