用于验证列表中是否存在值的脚本

时间:2015-05-26 20:56:41

标签: google-apps-script google-sheets

我有一个谷歌电子表格,用于协作,我能够创建一个UI界面,它将从表中获取和更新数据,使用户更容易。

对于我的工作,我需要限制用户只有在分配给他们时才能更新行,我能够做到。但除此之外,我还需要允许管理员分配或更新未分配给它们的行。

我有一张表格,其中包含所有员工的电子邮件地址和管理员标志,供管理员使用。

姓名____________电子邮件_________________管理员 员工1_______emp1@domain.com_____Admin
员工2_______emp2@domain.com_____
员工3_______emp3@domain.com_____
员工4_______emp4@domain.com_____Admin
员工5_______emp5@domain.com_____
员工6_______emp6@domain.com_____

如何在我的脚本中编写一些内容,以便在触发某个功能的用户具有管理员权限时允许我这样做。

我使用Session.getActiveUser()。getEmail()来提取用户的电子邮件地址。我正在创建在Google应用领域中使用的工具。

检查用户是否是该行的所有者的代码,这部分工作正常,但我想要做的是如果用户是管理员,他们基本上会跳过此检查。

if (s.getRange("E4").getValue() != usr()){
  msg("Once a Task is assigned to an employee, only assigned employee can make any changes to the Task. Thank you");
  return;
}
s = sheet
usr() = function calling to check active user email

如果我可以执行类似countifs的操作,我可以根据电子邮件地址和管理员条件检查计数,如果> = 1继续,如果其0显示错误,则无法进行更改。

请告诉我。

非常感谢帮助。

谢谢。

Zooooon

1 个答案:

答案 0 :(得分:0)

你在找这样的东西吗?

function myFunction() {
  var s = SpreadsheetApp.getActiveSheet();
  var usr = Session.getActiveUser().getEmail();
  var emails = s.getRange("E2:F").getValues();

for (var i=0;i<emails.length;i++) {
    if (emails[i][0] === usr){
      if (emails[i][1] === "Admin") {
        //Do something when Admin
        return;
      } else {
        //Do something when not admin
        return;
        }
    } else {
      //Do something when email not in the list
    }
  }
}

我假设您的数据在“D:F”

的范围内