【问题标题】:Protect range to allow editing of **values only** (ie. protect all formatting)保护范围以允许仅编辑**值**(即保护所有格式)
【发布时间】:2020-03-04 19:30:30
【问题描述】:

我认为当前版本的 Google 表格无法做到这一点,但无论如何我想问一下:

我希望用户能够在电子表格的特定范围内输入值,但我想防止他们更改格式(尤其是数据验证和条件格式)。我还想阻止他们添加新的行/列或删除行/列。

这可能吗?

【问题讨论】:

  • 不使用开箱即用的工具,但我想您可以使用 GAS 开发一个简单的 onEdit 触发器,在更改时立即将所有“正确”格式重新应用到活动范围就像一个样式表,只要有变化就会重新绘制工作表。
  • 这个问题不是关于与 Google 表格相关的编程,因此它与 Stack Overflow 无关。它属于WebApps
  • webapps.stackexchange.com/a/105031/49181webapps.stackexchange.com/a/105031/49181 的类似问题的回答中,似乎确实有针对此问题的编程相关解决方法

标签: google-sheets


【解决方案1】:

为了保护条件格式,我将范围设置为比需要的大一排或一列,并保护这额外的行或列。然后,不能再修改包括其范围内受保护单元格的条件格式。

【讨论】:

  • 这不会阻止编辑器更改行/列中其他单元格的数据验证和格式。
【解决方案2】:

保护工作表选项可能会限制其他用户添加/删除行的能力,但是我也花了很多时间尝试解决条件格式问题。最后,我最终使用了几种解决方法;

  • 我使用 appscript 进行条件格式化。这是最有效的解决方案,但是由于我不精通编写代码,我发现它很麻烦。下面的部分示例。
  • 我还使用的更快的解决方法是有条件地格式化用户编辑的单元格旁边的单元格,然后我会保护这些单元格。
if (values[i] == 'SUB') {
      sheet
      .setRowHeight(i+1, 19)
      .getRange('A'+n+':CB'+n)
      .setBackgroundColor('#b7b7b7')
      .setFontFamily("Abel").setFontSize(6).setFontColor('white').setFontWeight("bold")
      .setVerticalAlignment(DocumentApp.VerticalAlignment.MIDDLE).setHorizontalAlignment("center")
      .setBorder(null, null, true, null, null, null,'white',SpreadsheetApp.BorderStyle.SOLID_THICK)   /////// top,left,bottom,right,vertical,horizontal,color,style;

      sheet.getRange('O'+n+':O'+n).setBackgroundColor('white')
      sheet.getRange('AF'+n+':AF'+n).setBackgroundColor('white')

      sheet.getRange('AJ'+n+':AJ'+n).setBorder(null, null, null, true, null, null,'white',SpreadsheetApp.BorderStyle.SOLID_THICK)
      sheet.getRange('AN'+n+':AN'+n).setBorder(null, null, null, true, null, null,'white',SpreadsheetApp.BorderStyle.SOLID_THICK)
      sheet.getRange('AR'+n+':AR'+n).setBorder(null, null, null, true, null, null,'white',SpreadsheetApp.BorderStyle.SOLID_THICK)
      sheet.getRange('AV'+n+':AV'+n).setBorder(null, null, null, true, null, null,'white',SpreadsheetApp.BorderStyle.SOLID_THICK)

【讨论】:

    【解决方案3】:

    您可以在一张新纸上执行此操作。右键单击工作表名称,选择保护工作表,选择“除了某些单元格”,您可能从那里就可以了...

    您可能有一张旧工作表,因为它不适用于某些现有工作表。如果您单击“数据”并且仅将“命名和受保护的范围”视为单个条目而不是 2 个单独的菜单项,则您位于不允许保护的旧工作表上。

    【讨论】:

    • 这没有回答问题。我想保护格式,但仍允许用户更改单元格中的数据
    【解决方案4】:

    最好和最简单的解决方案是 Ctrl+Shift+V 仅将数据粘贴为值。我也一直在尝试这样做,因为我们使用涉及从不同来源复制/粘贴的工作表。在新数据之上进行格式绘制既烦人又浪费时间。练习 Ctrl+Shift+V 来粘贴以避免必须这样做。受保护的范围仅阻止其他用户输入数据。它对保持格式没有帮助。

    【讨论】:

    • 谢谢,但这并不能解决所提出的问题。我并不担心自己会意外更改格式,而是想阻止其他用户这样做。试图教育他们所有人是一项繁重的工作,而且是不可靠的。我希望完全禁止格式更改以避免问题。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2022-11-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多