如何不允许编辑,但仍然允许隐藏列/行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何不允许编辑,但仍然允许隐藏列/行相关的知识,希望对你有一定的参考价值。

我有一本有几张纸的工作簿。我还有一个自定义菜单,该菜单旨在使任何用户都能隐藏/显示某些列和行。我不希望任何人(除我以外)都可以编辑工作表。我“保护”工作表,以便只有我具有“编辑”访问权限。显示/隐藏功能非常适合我。

但是,无论何时用户尝试,它都会失败。我需要显示/隐藏功能才能对没有编辑权限的用户起作用。我尝试使用“仅警告”,但是显然,这仍然使他们可以编辑。

关于如何实现此目标的任何想法?

我的代码很简单:

function showPercents() 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  //var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  //for (var j = 0; j < sheets.length ; j++ ) 
   // var sheet = sheets[j];
    var sheetname = sheet.getSheetName();

    if (sheetname != 'Charts' && sheetname != 'DataIn' && sheetname != 'Config')
    

      var numofcolumns = sheet.getLastColumn();

      var i = 3;

      while (i < numofcolumns - 1)
      
        sheet.showColumns(i)
        sheet.showColumns(i+2)
        sheet.showColumns(i+4)
        sheet.showColumns(i+5)
        sheet.showColumns(i+7)
        sheet.showColumns(i+9)
        sheet.showColumns(i+10)

        i = i + 11

      

    

  //



function hidePercents() 
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getActiveSheet()
  //var sheets = SpreadsheetApp.getActiveSpreadsheet().getSheets();

  //for (var j = 0; j < sheets.length ; j++ ) 
   // var sheet = sheets[j];
    var sheetname = sheet.getSheetName();

    if (sheetname != 'Charts' && sheetname != 'DataIn' && sheetname != 'Config')
    

      var numofcolumns = sheet.getLastColumn();

      var i = 3;

      while (i < numofcolumns - 1)
      
        sheet.hideColumns(i)
        sheet.hideColumns(i+2)
        sheet.hideColumns(i+4)
        sheet.hideColumns(i+5)
        sheet.hideColumns(i+7)
        sheet.hideColumns(i+9)
        sheet.hideColumns(i+10)

        i = i + 11

      

    

  //


答案

使用所需的任何权限创建第二个工作表,然后从第一个工作表中导入所需的数据。

甚至可以是一个完整的克隆,通过将导入公式放在左上方的单元格中来导入每张工作表,但是您可以仅锁定导入单元格

以这种方式,用户可以显示隐藏或任何内容,而无需保存本地副本,并且您可以锁定第一个(数据输入)电子表格(具有自己的网址),以便他们甚至看不到它。

=IMPORTRANGE("abcd123abcd123", "sheet1!A1:C10")

=IMPORTRANGE("http://docs.google.com/spreadsheets/d/URL/to/spreadsheet/edit" , "A22:E27")

[如果您想完全锁定第一张表,请参阅这些出色的资源,以帮助显示如何设置这些权限

https://www.howtogeek.com/442246/how-to-import-data-from-another-google-sheet/

https://support.google.com/a/users/answer/9308940?hl=en

以上是关于如何不允许编辑,但仍然允许隐藏列/行的主要内容,如果未能解决你的问题,请参考以下文章

如何隐藏列(GridView)但仍访问其值?

如何把excel隐藏的行显示出来

winform中DataGridView 列隐藏时会触发啥事件?

如何使用隐藏列订购数据表

MVC Grid 的 Kendo UI 如何隐藏 ID 列

Excel数据编辑处理技巧