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

Google Apps Script中自定义Schema内无法使用变量的问题求助

问题根源

这不是Google Workspace Schema更新的限制,是JavaScript对象字面量的语法问题——你在customSchemas里直接写schemaSafeName:时,JS会把这个键名解析成字符串"schemaSafeName",而不是读取变量schemaSafeName的实际值"Test_Schema_Group",API自然找不到对应的自定义Schema。而Logger里的customFieldMask: schemaSafeName是直接传递变量值,所以能正常工作。

解决办法

有两种简单的修正方式:

方法1:使用方括号语法直接在对象字面量中引用变量

把对象里的schemaSafeName:改成[schemaSafeName]:,方括号会告诉JS这里要使用变量的值作为键名:

function updateUserSchemaNew() {
  var myEmailAdress = Session.getActiveUser().getEmail();
  var schemaSafeName = 'Test_Schema_Group';

try{
 AdminDirectory.Users.update({
   'customSchemas': {
     [schemaSafeName]: { // 用方括号包裹变量,获取变量值作为键名
       'Test_field1':false,
       'Test_field2':true
       }
       }
       },
       myEmailAdress);

  Logger.log(AdminDirectory.Users.get(myEmailAdress,{fields: 'customSchemas',projection: 'Custom',customFieldMask: schemaSafeName}));

  } catch(error){
    const {code, message} = error.details;
    if(code === 400 || code === 404 || code === 409 || code === 412){
      console.log("Error 400 or 404 or 409 or 412");
    } else {
      console.log(`${code} - ${message}`);
    }
  }
}

方法2:先构建customSchemas对象再传入

如果习惯分步操作,可以先创建对象,再用变量赋值键名:

function updateUserSchemaNew() {
  var myEmailAdress = Session.getActiveUser().getEmail();
  var schemaSafeName = 'Test_Schema_Group';

try{
  // 先单独构建customSchemas对象
  var customSchemasObj = {};
  customSchemasObj[schemaSafeName] = {
    'Test_field1':false,
    'Test_field2':true
  };

 AdminDirectory.Users.update({
   'customSchemas': customSchemasObj
       },
       myEmailAdress);

  Logger.log(AdminDirectory.Users.get(myEmailAdress,{fields: 'customSchemas',projection: 'Custom',customFieldMask: schemaSafeName}));

  } catch(error){
    const {code, message} = error.details;
    if(code === 400 || code === 404 || code === 409 || code === 412){
      console.log("Error 400 or 404 or 409 or 412");
    } else {
      console.log(`${code} - ${message}`);
    }
  }
}

两种方法都能让API正确识别你要更新的自定义Schema,之后你就可以通过表格动态传入schemaSafeName的值,实现批量操作而不用修改脚本。

内容的提问来源于stack exchange,提问作者Nuno Miguel

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 08:10:29