使用Google Apps Script插入新用户时出现GoogleJsonResponseException错误求助
解决Google Apps Script插入用户时的"Invalid Input: primary_user_email"错误
我帮你排查出两个关键问题,这应该能解决你的报错:
1. 传递了错误的参数类型给AdminDirectory.Users.insert()
你现在把用户数据包装成了数组[{...}],但AdminDirectory.Users.insert()方法要求第一个参数是单个的User资源对象,而不是数组。这会直接导致API解析参数失败,触发primary_user_email无效的错误。
2. 全局变量的时机问题
你在全局作用域直接读取单元格的值,这些代码会在脚本第一次加载时就执行,而不是每次运行newUser()函数时执行。如果之后你修改了表格里的A2/B2/C2/D2内容,全局变量里的first、last、email、unit还是保留着旧值,这也可能导致邮箱地址无效。
修正后的代码
// 全局变量只保留电子表格引用,不要在这里读取单元格值 var ss = SpreadsheetApp.openById("1dVJQRSQZvAwZOAjde1wQsbaz77r4jle00v0_IREO2pE"); function newUser() { // 每次运行函数时,重新读取最新的单元格数据 var sheet = ss.getSheetByName("Sheet1"); var first = sheet.getRange("A2").getValue(); var last = sheet.getRange("B2").getValue(); var email = sheet.getRange("C2").getValue(); var unit = sheet.getRange("D2").getValue(); // 这里直接使用单个对象,而不是数组 var user = { "primaryEmail": email, "orgUnitPath": '/Staff/' + unit, "name": { "givenName": first, "familyName": last }, "password": "ABCD.1234", "changePasswordAtNextLogin": true }; Logger.log(user); AdminDirectory.Users.insert(user); // 现在参数正确了 }
额外检查点
- 确认
email的值是符合Google Workspace格式的邮箱(比如xxx@yourdomain.com),确保域名是你的Workspace域名,没有拼写错误。 - 检查你的脚本是否有足够的权限:运行脚本时会提示授权,确保你授予了
Admin Directory API的访问权限。
内容的提问来源于stack exchange,提问作者Joel Beebe
相关产品推荐
相关产品推荐

