如何使用Google Apps Script的UrlFetchApp抓取新版Google Sites内部页面
问题解答
可以通过UrlFetchApp抓取团队内部新版Google Site的内容,返回登录页的原因是默认的UrlFetchApp请求未携带执行用户的身份认证凭证,你可以通过在请求头中注入OAuth令牌解决该问题。
修正后的代码
function myFunction() { var options = { headers: { 'Authorization': 'Bearer ' + ScriptApp.getOAuthToken() }, muteHttpExceptions: true } var txt = UrlFetchApp.fetch("https://sites.google.com/a/domain.com/home", options).getContentText(); Logger.log(txt); }
注意事项
- 若运行时提示权限不足,需要在项目的
appsscript.json配置文件中添加对应的OAuth授权范围,必选范围包括https://www.googleapis.com/auth/script.external_request,可根据实际情况补充https://www.googleapis.com/auth/sites范围。 - 执行脚本的账号必须持有目标内部站点的访问权限,站点的共享设置需要对账号或账号所在的用户组、组织单位开放访问权限。
- 新版Google Sites的页面内容依赖前端JS渲染,直接抓取到的原始HTML包含大量混淆的JS代码,没有清晰的结构化内容标识,若需要提取特定内容,需要额外编写规则做内容清洗。
- 若团队配置了内部站点的上下文访问限制,需要确认脚本运行的环境符合组织设定的IP、设备等安全访问规则。
内容的提问来源于stack exchange,提问作者weathertinker
相关产品推荐
相关产品推荐

