如何用Google Apps Script实现Google Sheets调用SAP Business Client并填入单据号?
Google Sheets触发SAP Business Client自动填单实现方案
核心思路
Google Apps Script(GAS)无法直接启动本地应用,但SAP Business Client支持自定义URL协议(sap://),我们可以通过构造协议链接,让浏览器唤起SAP并自动填入单据号。
步骤1:编写GAS脚本
- 打开你的Google Sheet,点击顶部「扩展程序」→「Apps Script」进入脚本编辑器。
- 删除默认代码,粘贴以下脚本:
function openSAPWithDocNumber() { // 获取当前选中的单个单元格 const activeCell = SpreadsheetApp.getActiveRange(); if (activeCell.getNumRows() > 1 || activeCell.getNumColumns() > 1) { SpreadsheetApp.getUi().alert('请仅选中一个包含单据号的单元格!'); return; } // 提取单据号并做格式校验 const docNumber = activeCell.getValue().toString().trim(); if (!docNumber) { SpreadsheetApp.getUi().alert('选中的单元格无有效单据号!'); return; } // 构造SAP协议链接(替换成你的事务码和参数) const targetTransaction = 'MB03'; // 替换为你需要的SAP事务码 const sapLaunchUrl = `sap://open/?transaction=${targetTransaction}¶meter=BLNR=${encodeURIComponent(docNumber)}`; // 弹出对话框展示链接(避免浏览器拦截直接打开) const ui = SpreadsheetApp.getUi(); ui.alert('点击下方链接唤起SAP:\n' + sapLaunchUrl); // 若浏览器允许弹窗,也可尝试直接打开: // SpreadsheetApp.openUrl(sapLaunchUrl); }
- 替换脚本里的
targetTransaction为你的目标事务码,同时调整参数名(比如销售订单事务用VBELN,需根据SAP事务的实际参数名修改)。 - 点击脚本编辑器顶部的「保存」,命名为
SAPDocLauncher。
步骤2:绑定脚本到图片
- 回到Google Sheet,右键你已创建的触发图片。
- 选择「分配脚本」,输入函数名
openSAPWithDocNumber,点击确定。
步骤3:授权与测试
- 选中一个包含单据号的单元格,点击图片触发函数。
- 第一次运行会弹出授权提示:点击「允许」→ 选择你的谷歌账号 → 在「此应用未验证」页面点击「高级」→ 选择「转到[你的脚本名]」→ 完成授权。
- 触发后会弹出对话框,点击其中的
sap://链接,系统会自动唤起SAP Business Client,打开指定事务码并填入单据号。
关键注意事项
- 确保你的电脑已安装SAP Business Client,且
sap://协议已被系统正确注册(安装SAP客户端时默认完成)。 - 若SAP参数不生效,需确认目标事务码对应的参数名称(可通过SAP事务码的屏幕字段属性查询)。
- 若直接
openUrl被浏览器拦截,使用弹窗展示链接是更稳妥的方式,用户可复制链接到浏览器地址栏打开。
内容的提问来源于stack exchange,提问作者Daniel Schulz
相关产品推荐
相关产品推荐

