Web App脚本如何获取打开它的电子表格ID?是否需传参?
问题分析与解决方案
你当前的代码之所以返回部署时的表格ID,是因为Web App绑定在原表格的上下文里运行,SpreadsheetApp.getActiveSpreadsheet()只会获取这个绑定表格的ID,和访问它的其他表格完全无关——没办法让Web App自动检测到打开它的那个表格ID,必须通过URL传递参数的方式实现。
修改后的代码实现
function doGet(e) { // 从URL参数中获取传入的表格ID var sheetId = e.parameter.sheetId; if (sheetId) { // 参数存在时直接返回该ID return ContentService.createTextOutput(sheetId); } else { // 未传参数时返回部署表格ID(可根据需求调整提示内容) var defaultId = SpreadsheetApp.getActiveSpreadsheet().getId(); return ContentService.createTextOutput("未传入表格ID,默认返回部署表格ID:" + defaultId); } }
使用方式
在需要获取自身ID的电子表格单元格中,用以下公式调用Web App(替换https://your-webapp-url为你的实际部署URL):
=IMPORTDATA("https://your-webapp-url?sheetId="&SPREADSHEET_ID())
公式里的SPREADSHEET_ID()会自动获取当前表格的ID,通过URL参数传递给Web App,Web App收到后直接返回这个ID。
内容的提问来源于stack exchange,提问作者user2946433
相关产品推荐
相关产品推荐

