如果条件来自 Google 的 AdminDirectory,如何 return

How to return if condition from Google's AdminDirectory

我正在尝试 return 各个 google 工作区用户的不同结果,我面临的问题是...第一个答案正在 return 所有用户。

例如William TellJohn Peter 得到 Mark Thomas 的 return 即 www.google.com

期望:我想为各个用户显示答案。

我哪里错了?

function getUserID() {
    var user = Session.getActiveUser().getEmail();
    var name = AdminDirectory.Users.get(user).name.fullName;

    if (name ="Mark Thomas") {
    greeting= "www.google.com";
    } else if (name ="William Tell"){
    greeting = "www.msn.com";
    }
    } else if (name ="John Peter"){
    greeting = "www.yahoo.com";
    }
    return greeting;
    }

name ="Mark Thomas" 是一项作业,不是等效性测试。

尝试name == "Mark Thomas"

调查结果:

  • 您需要在脚本中初始化名为 greeting 的变量。

  • 您在 else if (name ="John Peter") 之前的行中多了一个不必要的右括号 声明。

您可以在下面测试这个经过调整的脚本:

修改后的脚本:

function getUserID() {
   var user = Session.getActiveUser().getEmail();
   var name = AdminDirectory.Users.get(user).name.fullName;
   var greeting; //"greeting" needs to be initialized for the script to work
 
   if(name == "Mark Thomas") {
   greeting= "www.google.com";
   } else if (name == "William Tell"){
   greeting = "www.msn.com";
   } else if (name == "John Peter"){
   greeting = "www.yahoo.com";
   }
 
   return greeting;
   }

测试结果:

建议:

或者,我建议您使用 Switch statement,因为您有 多个固定条件 而不是嵌套 If-Else 语句。一个 switch 语句通常比一组嵌套的 ifs 更有效。

带 Switch 语句的脚本:

function getUserID() {
   var user = Session.getActiveUser().getEmail();
   var name = AdminDirectory.Users.get(user).name.fullName.toString();
   var greeting; //"greeting" needs to be initialized to exist & be used on the script
 
   switch(name){
     case name = "Mark Thomas":
       greeting = "www.google.com";
       break;
     case name = "William Tell":
       greeting = "www.msn.com";
       break;
     case name = "Admin IJG": //Added my test account's full name to see if it works
       greeting = "www.yahoo.com";
       break;
   }
 
   return greeting;
}

样本测试结果: