如何通过PHP调用Google API禁止编辑者分享Google文档
PHP 调用 Google Drive API 实现仅所有者可分享文档配置
核心逻辑:通过 Google Drive API v3 的文件更新接口,将文件的writersCanShare属性设置为false,即可禁止所有编辑者、写作者调整文档分享权限、新增协作者,仅文件所有者拥有完整分享管理权限。该配置效果与 Apps Script 中setShareableByEditors(false)完全一致,无需额外调用 Google Docs API。
前置依赖
- 已在 Google Cloud 控制台启用 Google Drive API,完成 OAuth 2.0 或服务账号凭据配置
- 通过 Composer 安装 Google 官方 PHP 客户端:
composer require google/apiclient:^2.0 - 用于调用 API 的账号必须持有目标文件的所有者权限,否则无法修改该配置项
可直接运行的实现代码
<?php require __DIR__ . '/vendor/autoload.php'; // 初始化API客户端 $client = new Google\Client(); $client->setApplicationName('Drive Share Permission Config'); $client->setScopes([Google\Service\Drive::DRIVE]); // 替换为你本地的凭据文件路径,OAuth授权流程请按官方授权逻辑补充access_token获取代码 $client->setAuthConfig('/path/to/your/google_api_credential.json'); $client->setAccessType('offline'); // 实例化Drive服务 $driveService = new Google\Service\Drive($client); // 替换为需要配置的目标Google文档/表格/幻灯片的文件ID $targetFileId = 'REPLACE_WITH_YOUR_FILE_ID'; // 构造更新参数,核心配置项:禁止写作者/编辑者分享 $fileUpdateMeta = new Google\Service\Drive\DriveFile([ 'writersCanShare' => false ]); // 发起更新请求 $updatedFile = $driveService->files->update( $targetFileId, $fileUpdateMeta, [ 'fields' => 'id,name,writersCanShare' // 指定返回字段用于校验配置结果 ] ); // 配置结果校验 if ($updatedFile->getWritersCanShare() === false) { echo "配置生效:仅文件所有者可调整分享权限,编辑/评论/查看角色均无分享权限"; } else { echo "配置未生效,请检查操作账号是否为文件所有者、API权限范围是否正确"; }
注意事项
- 该配置对所有存储在Google Drive中的文件类型生效,包括Docs、Sheets、Slides、普通上传文件等,无需单独对接Google Docs API
- 若目标文件存放在共享盘内,该配置可能被共享盘管理员的全局分享规则覆盖,需先确认共享盘权限设置允许自定义单文件分享权限
- 批量配置多份文档时,循环替换
$targetFileId调用更新接口即可,注意控制请求频率避免触发API限流 - 若需要恢复编辑者的分享权限,只需将
writersCanShare参数设为true重新调用更新接口即可
内容的提问来源于stack exchange,提问作者Taniya Halder
相关产品推荐
相关产品推荐

