如何通过Excel工作表按钮调用带Office认证的远程服务?
Excel工作表按钮功能实现问题
需求
我希望在Excel工作表中设置按钮,实现以下功能:
- 读取工作表中的部分数据
- 通过Office认证调用远程端点
- 将响应结果写回工作表
已尝试的方案及遇到的问题
1. Office Scripts
- 无法访问
OfficeRuntime.auth或Office.auth fetchAPI仅支持保存在OneDrive文件夹的脚本,不支持SharePoint中的脚本
2. Office Add-ins(基于新版JS API)
已编写任务窗格插件代码实现功能,但无法通过工作表内的按钮触发该函数,且希望保留工作表内多按钮的UI。代码如下:
async function button_click() { await Excel.run( async (context) => { let my_sheet = context.workbook.worksheets.getItem('my_sheet'); let my_data = my_sheet.getRange('my_data'); let request_data = do_stuff(my_data); let token = await OfficeRuntime.auth.getAccessToken(); let headers = new Headers(); headers.set('Authorization', token); let response = await fetch(SERVICE_URL,{ headers: headers, body: request_data }) let my_output = my_sheet.getRange('my_output'); my_output.values = response.body; }) }
3. VBA
可通过工作表按钮轻松触发操作,但暂无支持Office认证的库,即使是优秀的VBA-Web也仅实现了基于客户端凭证(用户名和密码)的OAuth2。
4. COM及旧式Excel Add-ins
因部署和更新流程繁琐未尝试,优先考虑其他方案。
具体疑问
- Office Scripts中是否可访问
Office.auth? - 如何通过工作表按钮调用Office Add-ins中的函数?
- VBA中是否有等效于
OfficeRuntime.auth.getAccessToken的功能?
内容的提问来源于stack exchange,提问作者AndreA
相关产品推荐
相关产品推荐

