GMB本地帖子PATCH请求:批量增删媒体的参数配置问题
GMB本地帖子PATCH请求批量增删图片的正确配置
问题背景
使用PATCH请求编辑GMB本地帖子时,尝试设置updateMask=media并传入多图数组,触发BAD_REQUEST错误,提示“Too many photos. A post may only have a maximum of 1 photos.”,但GMB本地帖子实际最多支持10张图片。当前已有可正常替换全部媒体的请求示例:
PATCH https://mybusiness.googleapis.com/v4/accounts/*/locations/*/localPosts/*?updateMask=media.mediaFormat,media.sourceUrl
const payload = { media: [{ mediaFormat: "PHOTO", sourceUrl: "URL" }] }
错误原因
这个错误并非GMB全局限制1张图,而是两个核心问题:
- PATCH更新逻辑误解:GMB的PATCH请求中,
media字段是全量替换而非追加。若仅传入新图片数组,会直接覆盖原有媒体,但如果你的帖子类型(如Offer、Event)仅允许1张主图,就会触发数量超限错误。 - 帖子类型限制:不同类型的本地帖子媒体配额不同,Offer、Event类最多1张图,普通动态帖最多支持10张图。
批量添加图片配置
若要批量添加图片(最终总数不超过对应帖子类型的上限),需按以下步骤操作:
- 先通过GET请求获取目标帖子的完整
media数组; - 将新增的图片对象(格式与示例一致)追加到原有数组中;
- 将合并后的数组作为
media字段传入请求; - 设置
updateMask=media(或更精确的media.mediaFormat,media.sourceUrl)。
示例代码:
// 假设已通过GET接口获取到原有媒体列表oldMedia const newPhotos = [ { mediaFormat: "PHOTO", sourceUrl: "https://example.com/photo1.jpg" }, { mediaFormat: "PHOTO", sourceUrl: "https://example.com/photo2.jpg" } ]; // 合并原有媒体与新图片 const payload = { media: [...oldMedia, ...newPhotos] };
请求URL:
PATCH https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/localPosts/{postId}?updateMask=media
删除单个图片配置
删除单张图片同样基于全量替换逻辑:
- 通过GET请求获取当前帖子的
media数组; - 过滤掉需要删除的图片(可通过
sourceUrl或媒体对象的name字段匹配); - 将过滤后的数组作为
media字段传入请求; - 设置
updateMask=media。
示例代码:
// 假设要删除指定URL的图片 const filteredMedia = oldMedia.filter(item => item.sourceUrl !== "https://example.com/to-delete.jpg"); const payload = { media: filteredMedia };
请求URL:
PATCH https://mybusiness.googleapis.com/v4/accounts/{accountId}/locations/{locationId}/localPosts/{postId}?updateMask=media
关键注意事项
- 确保帖子类型支持对应数量的媒体:普通动态帖最多10张图,Offer/Event类仅支持1张;
- 所有图片URL需符合GMB的媒体要求(可访问、格式正确、尺寸合规);
- 若只需替换全部媒体,直接传入目标媒体数组即可,无需合并原有数据(即你提供的示例逻辑)。
内容的提问来源于stack exchange,提问作者Bartłomiej Kozanka
相关产品推荐
相关产品推荐

