如何通过Google Sheets PHP API创建可通过链接访问的电子表格
实现方法
Google Sheets API 的创建接口本身不支持直接在properties中配置访问权限,权限管理属于 Google Drive API 的能力范围,你需要在创建表格完成后,额外调用 Drive API 的权限接口设置公开访问规则,操作步骤如下:
前置准备
- 确保你的 Google Cloud 项目中已经启用了 Google Drive API
- 你的授权账号需要添加 Drive 相关权限范围,推荐添加
https://www.googleapis.com/auth/drive
完整代码示例
// 初始化 Sheets 服务和 Drive 服务($client 为你已经完成授权配置的 Google_Client 实例) $serviceSheets = new Google_Service_Sheets($client); $serviceDrive = new Google_Service_Drive($client); // 原有创建表格逻辑 $spreadsheet = new Google_Service_Sheets_Spreadsheet([ 'properties' => [ 'title' => $title, ] ]); $spreadsheet = $serviceSheets->spreadsheets->create($spreadsheet); $spreadsheetId = $spreadsheet->spreadsheetId; // 新增:设置公开访问权限 $permission = new Google_Service_Drive_Permission(); // type设为anyone代表所有人可访问,role设为reader代表仅可读,需要编辑权限可改为writer,评论权限改为commenter $permission->setType('anyone'); $permission->setRole('reader'); // 执行权限设置 $serviceDrive->permissions->create($spreadsheetId, $permission); // 生成的公开访问链接格式如下 $publicUrl = "https://docs.google.com/spreadsheets/d/{$spreadsheetId}/edit";
补充说明
如果是使用服务账号创建的表格,默认所有者为服务账号,如果你需要个人谷歌账号也拥有表格的管理权限,可以额外添加一条权限规则:
$userPermission = new Google_Service_Drive_Permission(); $userPermission->setType('user'); $userPermission->setRole('owner'); $userPermission->setEmailAddress('你的个人谷歌邮箱地址'); $serviceDrive->permissions->create($spreadsheetId, $userPermission, ['sendNotificationEmail' => false, 'transferOwnership' => true]);
内容的提问来源于stack exchange,提问作者Kemsikov
相关产品推荐
相关产品推荐

