Google Slides
2026-03-24
新闻来源:网淘吧
围观:93
电脑广告
手机广告
Google 幻灯片
通过托管的 OAuth 身份验证访问 Google Slides API。创建和管理演示文稿、添加幻灯片、插入文本和图像,以及控制格式。
快速开始
# 创建新演示文稿
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'title': 'My Presentation'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/google-slides/v1/presentations', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
基本 URL
https://gateway.maton.ai/google-slides/{native-api-path}
将{native-api-path}替换为实际的 Google Slides API 端点路径。网关会将请求代理到slides.googleapis.com并自动注入您的 OAuth 令牌。
身份验证
所有请求都需要在 Authorization 标头中包含 Maton API 密钥:
Authorization: Bearer $MATON_API_KEY
环境变量:将您的 API 密钥设置为MATON_API_KEY:
export MATON_API_KEY="YOUR_API_KEY"
获取您的 API 密钥
复制您的 API 密钥
连接管理在https://ctrl.maton.ai
管理您的 Google OAuth 连接
。
列出连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections?app=google-slides&status=ACTIVE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
创建连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
响应:
{
"connection": {
"connection_id": "21fd90f9-5935-43cd-b6c8-bde9d915ca80",
"status": "ACTIVE",
"creation_time": "2025-12-08T07:20:53.488460Z",
"last_updated_time": "2026-01-31T20:03:32.593153Z",
"url": "https://connect.maton.ai/?session_token=...",
"app": "google-slides",
"metadata": {}
}
}
在浏览器中打开返回的URL以完成 OAuth 授权。
删除连接
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections/{connection_id}', method='DELETE')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
指定连接
如果您有多个 Google Slides 连接,请通过Maton-Connection标头指定要使用哪一个:
python <<'EOF'
import urllib.request, os, json
data = json.dumps({'title': '我的演示文稿'}).encode()
req = urllib.request.Request('https://gateway.maton.ai/google-slides/v1/presentations', data=data, method='POST')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
req.add_header('Content-Type', 'application/json')
req.add_header('Maton-Connection', '21fd90f9-5935-43cd-b6c8-bde9d915ca80')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
如果省略,网关将使用默认的(最早的)活动连接。
API 参考
演示文稿
创建演示文稿
POST /google-slides/v1/presentations
Content-Type: application/json
{
"title": "我的演示文稿"
}
获取演示文稿
GET /google-slides/v1/presentations/{presentationId}
页面(幻灯片)
获取页面
GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}
获取页面缩略图
GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}/thumbnail
使用自定义尺寸:
GET /google-slides/v1/presentations/{presentationId}/pages/{pageId}/thumbnail?thumbnailProperties.mimeType=PNG&thumbnailProperties.thumbnailSize=LARGE
批量更新
batchUpdate端点用于大多数修改操作。它接受一个请求数组,这些请求会以原子方式应用。
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [...]
}
创建幻灯片
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createSlide": {
"objectId": "slide_001",
"slideLayoutReference": {
"predefinedLayout": "TITLE_AND_BODY"
}
}
}
]
}
可用的预定义布局:
空白标题标题和正文标题和两栏仅标题章节标题单栏文本要点大数字
插入文本
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"insertText": {
"objectId": "{shapeId}",
"text": "Hello, World!",
"insertionIndex": 0
}
}
]
}
删除文本
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"deleteText": {
"objectId": "{shapeId}",
"textRange": {
"type": "ALL"
}
}
}
]
}
创建形状
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createShape": {
"objectId": "shape_001",
"shapeType": "TEXT_BOX",
"elementProperties": {
"pageObjectId": "{slideId}",
"size": {
"width": {"magnitude": 300, "unit": "PT"},
"height": {"magnitude": 100, "unit": "PT"}
},
"transform": {
"scaleX": 1,
"scaleY": 1,
"translateX": 100,
"translateY": 100,
"unit": "PT"
}
}
}
}
]
}
创建图片
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"createImage": {
"objectId": "image_001",
"url": "https://example.com/image.png",
"elementProperties": {
"pageObjectId": "{slideId}",
"size": {
"width": {"magnitude": 200, "unit": "PT"},
"height": {"magnitude": 200, "unit": "PT"}
},
"transform": {
"scaleX": 1,
"scaleY": 1,
"translateX": 200,
"translateY": 200,
"unit": "PT"
}
}
}
}
]
}
删除对象
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"deleteObject": {
"objectId": "{objectId}"
}
}
]
}
更新文本样式
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"updateTextStyle": {
"objectId": "{shapeId}",
"textRange": {
"type": "ALL"
},
"style": {
"bold": true,
"fontSize": {"magnitude": 24, "unit": "PT"},
"foregroundColor": {
"opaqueColor": {
"rgbColor": {"red": 0.2, "green": 0.4, "blue": 0.8}
}
}
},
"fields": "bold,fontSize,foregroundColor"
}
}
]
}
替换所有文本
POST /google-slides/v1/presentations/{presentationId}:batchUpdate
Content-Type: application/json
{
"requests": [
{
"replaceAllText": {
"containsText": {
"text": "{{placeholder}}",
"matchCase": true
},
"replaceText": "实际值"
}
}
]
}
代码示例
JavaScript
// 创建演示文稿
const response = await fetch(
'https://gateway.maton.ai/google-slides/v1/presentations',
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({ title: '我的演示文稿' })
}
);
const presentation = await response.json();
const presentationId = presentation.presentationId;
// 添加幻灯片
await fetch(
`https://gateway.maton.ai/google-slides/v1/presentations/${presentationId}:batchUpdate`,
{
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${process.env.MATON_API_KEY}`
},
body: JSON.stringify({
requests: [
{
createSlide: {
slideLayoutReference: { predefinedLayout: 'TITLE_AND_BODY' }
}
}
]
})
}
);
Python
import os
import requests
headers = {
'Content-Type': 'application/json',
'Authorization': f'Bearer {os.environ["MATON_API_KEY"]}'
}
# 创建演示文稿
response = requests.post(
'https://gateway.maton.ai/google-slides/v1/presentations',
headers=headers,
json={'title': '我的演示文稿'}
)
presentation = response.json()
presentation_id = presentation['presentationId']
# 添加幻灯片
requests.post(
f'https://gateway.maton.ai/google-slides/v1/presentations/{presentation_id}:batchUpdate',
headers=headers,
json={
'requests': [
{
'createSlide': {
'slideLayoutReference': {'predefinedLayout': 'TITLE_AND_BODY'}
}
}
]
}
)
注意事项
- 对象ID在演示文稿中必须是唯一的
- 所有修改(添加幻灯片、文本、形状等)请使用 batchUpdate
- batchUpdate 中的多个请求是原子性应用的
- 尺寸和位置使用 PT(点)作为单位(72 点 = 1 英寸)
- 使用
replaceAllText用于基于模板的演示文稿生成 - 重要提示:当使用curl命令时,如果URL中包含方括号,请使用
curl -g以禁用通配符解析 - 重要提示:当通过管道将curl输出传递给
jq或其他命令时,某些shell环境中可能无法正确展开环境变量,例如$MATON_API_KEY。通过管道传递时,您可能会遇到"无效API密钥"的错误。
错误处理
| 状态码 | 含义 |
|---|---|
| 400 | 缺少Google Slides连接 |
| 401 | Maton API密钥无效或缺失 |
| 404 | 未找到演示文稿 |
| 429 | 请求频率受限(每个账户10次/秒) |
| 4xx/5xx | 来自Google Slides API的穿透性错误 |
故障排除:API密钥问题
- 检查
MATON_API_KEY环境变量是否已设置:
echo $MATON_API_KEY
- 通过列出连接来验证API密钥是否有效:
python <<'EOF'
import urllib.request, os, json
req = urllib.request.Request('https://ctrl.maton.ai/connections')
req.add_header('Authorization', f'Bearer {os.environ["MATON_API_KEY"]}')
print(json.dumps(json.load(urllib.request.urlopen(req)), indent=2))
EOF
故障排除:无效的应用名称
- 请确保您的URL路径以
google-slides开头。例如:
- 正确:
https://gateway.maton.ai/google-slides/v1/presentations - 错误:
https://gateway.maton.ai/slides/v1/presentations
资源
文章底部电脑广告
手机广告位-内容正文底部


微信扫一扫,打赏作者吧~