使用Drive.Permissions.create设置权限过期时间报错,求排查原因
关于Google Drive权限修改和过期时间设置的问题解答
一、修改已有用户权限不生效的原因及解决方法
- 你推测的没错,
Drive.Permissions.create()仅用于首次添加新权限。当目标用户已拥有该文件的权限时,再次调用create方法添加更低级别的权限(比如从writer改为reader),用户会同时拥有两个权限,而Google Drive会优先应用最高权限(writer),所以看起来权限未变更。 - 正确操作是使用权限修改方法:
- 先通过
Drive.Permissions.list(fileId)获取该用户对应的permissionId - 调用
Drive.Permissions.update()或Drive.Permissions.patch()修改角色:// 使用update方法替换整个权限对象 Drive.Permissions.update( { role: "reader", type: "user", emailAddress: destinataireEd1 }, fileId, permissionId, { sendNotificationEmail: false } ); // 或者用patch方法仅更新需要修改的字段(更高效) Drive.Permissions.patch( { role: "reader" }, fileId, permissionId, { sendNotificationEmail: false } );
- 先通过
二、设置过期时间报错的原因
你遇到的错误:
GoogleJsonResponseException: API call to drive.permissions.create failed with error: Expiration dates cannot be set on this item
主要触发原因如下:
- 个人Drive文件限制:Google Drive个人版的文件不支持设置权限过期时间,仅Google Workspace(企业版、教育版等)账户下的共享驱动器文件,或满足特定条件的文件支持该功能。
- 权限角色限制:若尝试给文件所有者设置过期时间也会报错(你设置的是writer,此条大概率不适用)。
内容的提问来源于stack exchange,提问作者Nicolas
相关产品推荐
相关产品推荐

