You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Google PHP API Client仅导出Google Sheets单工作表为PDF

解决Google Sheet单工作表PDF导出问题(PHP API Client版)

我之前做类似项目的时候也踩过这个坑——一开始盯着Sheets API找方法,后来才发现Drive API的导出功能才是正确路径,而且只需要加一个参数就能指定单个工作表导出PDF。

下面是具体的实现步骤和代码示例:

核心思路

Google Drive API的files.export方法支持通过gid查询参数指定要导出的工作表ID,这个gid你可以从工作表的URL里获取(比如打开目标工作表后,URL末尾的#gid=XXXXXX里的数字就是)。

实现步骤

  • 确保你的PHP客户端已经正确初始化,并且拥有Drive API的访问权限(推荐使用https://www.googleapis.com/auth/drive.file这个最小权限范围)。
  • 调用Drive API的files->export方法,指定导出的MIME类型为application/pdf,同时在请求中添加gid参数。

PHP代码示例

<?php
require __DIR__ . '/vendor/autoload.php';

// 初始化Google客户端(这里假设你已经完成了授权配置,比如使用服务账号或者OAuth2)
$client = new Google\Client();
$client->setApplicationName('你的应用名称');
$client->setScopes([Google\Service\Drive::DRIVE_FILE]);
// 这里替换成你的授权方式,比如服务账号密钥
$client->setAuthConfig('service-account-key.json');
$client->setAccessType('offline');

// 初始化Drive服务
$driveService = new Google\Service\Drive($client);

// 定义要导出的表格ID和目标工作表gid
$spreadsheetId = '你的Google Sheet文档ID';
$targetSheetGid = '目标工作表的gid数字';

// 构建导出请求,指定PDF格式和gid参数
$exportParams = [
    'mimeType' => 'application/pdf',
    'gid' => $targetSheetGid
];

try {
    // 执行导出请求,获取PDF内容
    $pdfContent = $driveService->files->export($spreadsheetId, 'application/pdf', $exportParams)->getBody()->getContents();
    
    // 这里可以把PDF内容保存到本地,或者直接用于发送邮件
    file_put_contents('quote.pdf', $pdfContent);
    echo '单工作表PDF导出成功!';
} catch (Exception $e) {
    echo '导出失败:' . $e->getMessage();
}
?>

关键说明

  • 为什么用Drive API而不是Sheets API?因为Sheets API主要负责表格数据的读写操作,而文档格式导出(PDF、Excel等)是Drive API的功能范畴。
  • 一定要确认gid参数的正确性,每个工作表的gid都是唯一的,哪怕你重命名工作表,gid也不会变。
  • 如果需要自定义PDF的导出样式(比如纸张大小、是否显示网格线等),还可以添加额外的参数,比如size(指定纸张尺寸)、gridlines(是否显示网格线,值为true或false)等,这些参数可以直接加到exportParams数组里。

内容的提问来源于stack exchange,提问作者ÁngelBlanco

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:25:21