使用Google Apps脚本在Google表格中突出显示当前用户的名称

时间:2019-01-14 14:33:51

标签: google-apps-script google-sheets google-apps

我正在处理带有表格的电子表格,该表格包含工人的姓名及其全年的空缺情况。我的目标是当特定人员打开工作表时以适当的名称突出显示单元格。所有用户的first-name.last_name@gmail.com架构中的Google邮件。

我已经编写了一些代码,用于查找名称并对活动用户的名称进行粗体操作,您可以在下面看到它:

function onOpen(e) 
{
 var ss = SpreadsheetApp.getActiveSpreadsheet();
 var sheets = ss.getSheets();
 for(var k = 0; k<sheets.length; k++)
 {
    var data = sheets[k].getDataRange().getValues();
    var user = Session.getActiveUser().getEmail();
    var splitname =  user.split("@")[0];
    var first = splitname.split(".")[0];
    var last = splitname.split(".")[1];
    var formatted_first = first.charAt(0).toUpperCase() + first.slice(1);
    var formatted_last = last.charAt(0).toUpperCase() + last.slice(1);
    var name = formatted_first + " " + formatted_last;

    for(var i = 0; i<data.length;i++)
    {
      if(data[i][0] == name)
      { 
        var a = i+1;
      }
    }
    sheets[k].getRange(a,1).setFontWeight("bold");
  }
}

问题在于:

  1. 我不知道如何临时执行操作,仅在打开工作表的时间内。
  2. 编写代码后,我意识到所有活动用户都将看到粗体操作,因此如果一个用户在另一个人已经打开但尚未关闭时打开工作表,则他不仅会看到他的姓名突出显示,还会看到其他人用户名。

Soo,我的问题是是否有可能使更改仅对进行更改的用户可见,以及如何仅在打开工作表时执行突出显示。

如果您知道任何不使用宏就可以实现的Google功能,那将是最佳解决方案。也许我的研究不够好。

预先感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

  

Soo,我的问题是是否有可能使更改仅对进行更改的用户可见,以及如何仅在打开工作表时执行突出显示。

不,没有任何可能性。替代方法是为每个用户使用一个电子表格,或编辑共享设置以仅允许一个用户在所有者之外访问该电子表格,但是您必须假定所有者和当前编辑者将能够看到由所有者进行的更改。另一个。

注意:过滤器视图允许用户应用仅对使用过滤器视图的用户可见的过滤器设置,但其他用户可以查看对过滤数据的任何更改。