如何提取内部gSite页面的所有链接?UrlFetchApp返回登录页该如何解决?
内部gSite链接批量提取可行方案
方案1:给UrlFetchApp添加身份授权解决权限问题
之前返回登录页是因为请求没有携带你的内部账号授权凭据,按以下方式修改脚本即可:- 在Apps Script的
appsscript.json中添加gSite相关授权作用域:"oauthScopes": ["https://www.googleapis.com/auth/script.external_request", "https://sites.google.com/feeds"] - 调用
UrlFetchApp时在请求头中带上当前用户的OAuth令牌,示例代码:
const response = UrlFetchApp.fetch("你的内部gSite页面地址", { headers: { Authorization: `Bearer ${ScriptApp.getOAuthToken()}` }, muteHttpExceptions: true }) const htmlContent = response.getContentText()确认你对目标gSite有至少查看权限,且Workspace管理员未限制脚本访问内部站点资源即可正常获取HTML内容。
- 在Apps Script的
方案2:直接调用Google Sites API提取链接(更稳定)
无需解析HTML,直接调用官方Google Sites API拉取站点所有页面的元数据、内嵌链接、资源地址,返回结构化数据可直接提取所需链接,API天然走内部权限校验,只要账号有站点访问权限即可调用,出错概率远低于自行爬取解析HTML。方案3:本地自动化工具绕过服务端权限限制
如果Workspace策略不允许脚本调用内部站点,可使用Selenium、Playwright等浏览器自动化工具,调用本地已登录Google内部账号的浏览器配置文件访问gSite页面,直接复用本地登录状态无需额外鉴权,获取页面源码后解析提取链接,完成后可直接调用 Sheets API 同步结果到gSheet,全程可自动化定时运行。
内容的提问来源于stack exchange,提问作者Murphy013
相关产品推荐
相关产品推荐

