You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于Google Apps Script调用Admin Directory API的验证逻辑疑问

Google Admin API用户验证脚本逻辑解析

问题背景

我通过用户ID(第4列)拼接邮箱调用Google Admin API验证用户有效性,第10列(resolved)为空时才执行验证。现在发现try块里的两行setValue()代码,都会在同一批无效用户处触发错误,想搞清楚:

  1. 实际的验证逻辑在哪?
  2. 脚本是怎么识别检查主邮箱地址的?

对应脚本代码

function getNames() {
  
  var ss = SpreadsheetApp.getActiveSpreadsheet()
  var sheet = ss.getActiveSheet();
  var values = sheet.getDataRange().getValues();
    
  for(var i = 1; i < values.length; i++){
    var data = values[i];
    var resolved = data[10];
        
    if(resolved === ""){

      try{
        
        var email = sheet.getRange(1+i,4).getValues() + '@buisness.com'
        var user = AdminDirectory.Users.get(email);
        var name  = user.name.fullName;
        
        sheet.getRange(1+i, 5).setValue('Yes this is an employee');//How does this work?
        //sheet.getRange(1+i, 5).setValue(name);//This works which I expect
        }
                   
      catch(errors){
        sheet.getRange(1+i,5).setValue(errors);              
      }      
    }
 }
}

一、实际验证逻辑的位置

验证的核心就在这行代码:

var user = AdminDirectory.Users.get(email);

这是直接调用Google Admin Directory API的Users.get方法,传入拼接好的邮箱地址。如果这个邮箱是你的Google Workspace域内有效的用户主邮箱,API会返回完整的用户对象;如果邮箱无效(比如用户名拼写错、域内无此用户),API会直接抛出错误,代码立刻跳到catch块执行,不会往下走try里的setValue步骤。

二、脚本识别检查主邮箱的流程

  1. 邮箱拼接:从第4列获取输入的用户名,拼接上@buisness.com形成完整邮箱地址(注意这里域名拼写是buisness,如果是笔误可能会导致正常用户也验证失败)。
  2. API校验:AdminDirectory.Users.get(email)会向Google的服务发起请求,在你的Workspace域用户数据库里精确匹配这个邮箱——只有完全匹配用户的主邮箱才会通过校验,别名、错误格式的邮箱都会触发错误返回。

三、为什么两行setValue()都会在同一批无效用户处触发错误

不管你用try里哪一行setValue,无效用户的邮箱在AdminDirectory.Users.get(email)这一步就会失败,直接进入catch块,根本到不了执行setValue的环节。你看到的“同一批无效用户触发错误”,本质是这些用户的邮箱通不过API校验,所以都会走catch写入错误信息,和try里的setValue代码无关——有效的用户才会执行try里的写入操作。

另外提个小优化:sheet.getRange(1+i,4).getValues()返回的是二维数组,拼接时虽然能正常转成字符串,但更规范的写法是用getValue()获取单个单元格的值:

var email = sheet.getRange(1+i,4).getValue() + '@buisness.com'

内容的提问来源于stack exchange,提问作者Mr. Anderson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 21:27:28