首页 > 解决方案 > 为什么不能锁定用户输入的值?

问题描述

我有一个电子表格

存在来自第 2-> 4 行的数据:

如果用户打开文件,如果行存在数据,工作表将锁定。

用户输入第 5 行和第 6 行,关闭文件

但用户再次打开文件,文件仅锁定第 2-> 4 行,第 5 行和第 6 行未锁定。

这是我的代码function onOpen(e)

function onOpen(e){
    var oSheet=SpreadsheetApp.getActiveSheet();
    for(var i=2;i<10;i++)
          {
            if(oSheet.getRange(i, 2).getValue() !="")
            {

              var protection = oSheet.getRange(i, 2).protect().setDescription('protectedrange');
              var me = Session.getEffectiveUser();
              protection.addEditor(me);
              protection.removeEditors(protection.getEditors());
              if (protection.canDomainEdit()) {
                protection.setDomainEdit(false);
              }
            }
          }
}

为什么不能锁定用户输入的值?

标签: google-apps-scriptgoogle-sheets

解决方案


当活动用户是电子表格的所有者时,像 onOpen 这样的简单触发器可以做某些事情,但当活动用户是编辑者时不能做同样的事情。

某些事情是那些需要授权的事情,例如保护范围。

不要使用简单的触发器,而是使用可安装的触发器。

参考

https://developers.google.com/apps-script/guides/triggers


推荐阅读