【问题标题】:Colorize cells based on editor根据编辑器为单元格着色
【发布时间】:2021-09-04 09:57:51
【问题描述】:

我尝试为 Google 表格制作一个脚本,看看编辑器会修改什么。 这是我的脚本:

function onEdit() {  
  var sheet = SpreadsheetApp.getActiveSheet();
  var email = Session.getActiveUser().getEmail();
  Logger.log(email);
  var User1 = email.indexOf("user1@email.com");
  var User2 = email.indexOf("user2@email.com");
  Logger.log(User1);
  Logger.log(User2);
  if (User1 = -1.0){
    sheet.getActiveCell().setBackground('#f4cccc')}
  if (User2 = -1.0){
    sheet.getActiveCell().setBackground('#c9daf8')}
}

日志看起来正确:

11:42:08 AM Notice  Execution started
11:42:10 AM Info    user1@email.com
11:42:10 AM Info    0.0
11:42:10 AM Info    -1.0
11:42:09 AM Notice  Execution completed

但用户 1 和 2 的颜色相同(c9daf8)。所以我错过了一些东西。

【问题讨论】:

    标签: if-statement google-apps-script google-sheets indexof


    【解决方案1】:

    试试下面的代码:

    您需要使用getEffectiveUser() 而不是getActiveUser()

    function onEdit() {  
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var email = Session.getEffectiveUser().getEmail();
      Logger.log(email);
      var User1 = "user1@email.com";
      var User2 ="user2@email.com";
    
      if (email == User1){
        sheet.getActiveCell().setBackground('#f4cccc');
    
        }
      if (email == User2) {
        sheet.getActiveCell().setBackground('#c9daf8');}
    }
    

    参考:getEffectiveUser()

    如果适用于特定数据范围:

    function onEdit() {  
      var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var dataRng = sheet.getActiveCell().getColumn();
      var email = Session.getEffectiveUser().getEmail();
      Logger.log(email);
      var User1 = "user1@gmail.com";
      var User2 = "user2@gmail.com";
    
      if (email == User1 && (dataRng == 2 || dataRng == 3) ){
        sheet.getActiveCell().setBackground('#f4cccc');
    
        }
      if (email == User2 && (dataRng == 2 || dataRng == 3)){
        sheet.getActiveCell().setBackground('#c9daf8');
    
      }
    
    }
    

    【讨论】:

    • 非常感谢。它现在的工作。 :) 你知道如何设置脚本的范围吗?我只想在 B3:C1001 单元格上使用它。谢谢。
    • @NorbertFarkas 我也根据范围编辑了我的答案
    • 谢谢@NorbertFarkas,别忘了给答案投票
    • 不能。 :( : 感谢您的反馈!您需要至少 15 个声望才能投票,但您的反馈已被记录。
    • 现在它停止工作了,但不知道为什么。使用相同的帐户,但什么都没有..:(
    猜你喜欢
    • 2022-12-08
    • 1970-01-01
    • 2014-05-04
    • 2014-10-22
    • 2023-04-07
    • 1970-01-01
    • 2013-04-09
    • 2019-11-12
    • 1970-01-01
    相关资源
    最近更新 更多