执行许可证批量修改脚本提示userID is not defined报错
报错原因
你遇到的userID is not defined是JavaScript大小写敏感规则导致的变量引用错误:
- 循环内声明的用户ID变量名为
userId(末尾字母d为小写) - 但API请求体传参时写的是从未声明的
userID(末尾字母D为大写),引擎找不到对应变量就会抛出未定义报错。
修复后可运行代码
function updateLicenses() { var updateSheet = SpreadsheetApp.getActive().getSheetByName("Update Licenses"); var data = updateSheet.getRange(2, 1, updateSheet.getLastRow() - 1, 3).getValues(); var fileArray = [ ["License Update Status"] ]; // 遍历表格行数据调用许可证修改接口 data.forEach(function(item) { var status = "License Assigned Successfully"; try { var userId = item[0]; var apiCall = AdminLicenseManager.LicenseAssignments.patch( { // 填写要切换的新许可证信息 "productId": "Google-Apps", "skuId": "1010020027", "userId": userId }, "Google-Apps", "1010020028", // 填写用户当前已分配的旧许可证SKU ID userId ); } catch (e) { status = e.message; } fileArray.push([status]); }); updateSheet.getRange(1, 2, fileArray.length, fileArray[0].length).setValues(fileArray); }
额外注意事项
- 运行脚本前需要先在Apps Script编辑器左侧「服务」菜单中添加Admin SDK服务,否则会报
AdminLicenseManager is not defined错误 - 执行脚本使用的账号必须拥有Google Workspace超级管理员或对应许可证管理权限,否则接口会返回权限不足报错
- 请确认代码中填写的新旧SKU ID和你租户实际的许可证SKU完全匹配,避免出现参数错误
- 表格第一列需要填写对应用户的完整邮箱地址作为userId,不要填别名或者其他格式的用户标识
内容的提问来源于stack exchange,提问作者Ju Ale
相关产品推荐
相关产品推荐

