如何用AppScript提取Google表格URL中的code参数值
解决Google Sheets中获取Adobe Sign授权code的问题
问题原因
你之前的尝试失败是因为:
onOpen事件的e参数仅包含表格打开的上下文信息,不包含URL中的query参数,所以e.parameter是undefined,导致报错。- 手动通过菜单触发
doGet函数时,不会传入HTTP请求的e参数,e本身是undefined,自然无法读取e.parameter。doGet仅在脚本作为Web App部署并被HTTP请求触发时才会接收带参数的e对象,但你的redirect_uri指向的是表格本身,不是Web App。
正确实现方式
通过解析当前表格的URL来提取code参数,步骤如下:
1. 添加触发菜单
修改onOpen函数,添加一个用于获取授权码的菜单项:
function onOpen() { const ui = SpreadsheetApp.getUi(); ui.createMenu('Document Control') .addItem('获取授权码', 'getAuthorizationCode') .addToUi(); }
2. 实现授权码解析函数
编写getAuthorizationCode函数,获取当前表格URL并解析code参数:
function getAuthorizationCode() { // 获取当前表格的完整URL const spreadsheetUrl = SpreadsheetApp.getActiveSpreadsheet().getUrl(); // 解析URL中的查询参数 const urlParams = new URL(spreadsheetUrl).searchParams; const code = urlParams.get('code'); if (code) { // 成功获取到code,可根据需求处理(比如弹窗提示、写入表格) SpreadsheetApp.getUi().alert(`授权码已获取:${code}`); // 示例:将code写入当前工作表的A1单元格 // SpreadsheetApp.getActiveSheet().getRange('A1').setValue(code); } else { SpreadsheetApp.getUi().alert('未检测到授权码,请确认已完成Adobe Sign授权跳转'); } }
3. 使用流程
- 触发Adobe Sign授权请求,用户完成授权后重定向回表格。
- 在表格的「Document Control」菜单中点击「获取授权码」。
- 函数会自动解析URL中的code参数,完成后续处理。
注意事项
- 确保Adobe Sign的
redirect_uri设置为表格的编辑URL(即用户实际打开的表格链接),保证重定向后的URL包含code参数。 - 授权码具有时效性且只能使用一次,获取后请立即用于请求access token。
内容的提问来源于stack exchange,提问作者Katrina Trial
相关产品推荐
相关产品推荐

