Office Scripts参数在Power Automate中不显示问题排查求助
Office Scripts参数在Power Automate中消失的异常排查
我编写了一个复杂的Office Scripts脚本,用于接收Power Automate前置步骤传递的参数,此前运行完全正常,但从上周一开始突然出现异常。我无法确定是脚本本身过于复杂,还是Power Automate环境变更导致的问题。
脚本采用了接口定义与嵌套函数结构,未发现语法错误。但存在一个奇怪的现象:当脚本被极度简化时,Power Automate中能正常显示名为draftTab的参数输入框;但只要添加部分代码,该输入框就会消失。我尝试过逐行回退代码排查问题,也重新添加了Excel连接器,但都未能解决问题。
完整脚本代码
function main(workbook: ExcelScript.Workbook, draftTab: string) { let wsArr: ExcelScript.Worksheet[] = workbook.getWorksheets(); let libContent: clsLibraryContent = { Filename: workbook.getName(), Modules: [], }; wsArr.forEach(ws => { let wsName: string = ws.getName(); console.log("loop: " + wsName); let shtRawDraftName: string = draftTab.slice(0, draftTab.indexOf("_DRAFT")); console.log("look for: " + shtRawDraftName); if (wsName != 'Index' && wsName != 'Changes' && wsName != 'Changes_VL' && wsName != 'Header' && wsName != 'Other_Identifiers' && wsName == shtRawDraftName) { console.log("ifs passed " + shtRawDraftName); let usedRange: ExcelScript.Range = ws.getUsedRange(); let headersRow: number = usedRange.find('Variable Name', { completeMatch: true }).getRowIndex(); let lastRow: number = usedRange.getRowCount(); let RDS: clsModule = { TabName: ws.getName(), Header: ws.getCell(0, 0).getValue().toString(), Description: ws.getCell(1, 0).getValue().toString(), Label: ws.getCell(2, 0).getValue().toString(), Name: ws.getCell(3, 0).getValue().toString(), KeyStructure: ws.getCell(4, 0).getValue().toString(), CurrentVersion: ws.getCell(5, 0).getValue().toString(), PreviousVersion: ws.getCell(6, 0).getValue().toString(), Comments: ws.getCell(7, 0).getValue().toString(), Variables: [], }; for (let i = headersRow + 1; i < lastRow; i++) { let newVariable: string = ws.getCell(i, 0).getValue().toString().trim(); console.log("Cell A content: " + newVariable + ";"); if (newVariable != "") { let variable: clsVariable = { Name: ws.getCell(i, 0).getValue().toString().trim(), Label: ws.getCell(i, 1).getValue().toString().trim(), Type: ws.getCell(i, 2).getValue().toString().trim(), CollectionLength: ws.getCell(i, 3).getValue().toString().trim(), Format: ws.getCell(i, 4).getValue().toString().trim(), Class: ws.getCell(i, 6).getValue().toString().trim(), Required: ws.getCell(i, 7).getValue().toString().trim(), ValidValues: [], }; for (let j: number = 8; j < 30; j++) { let configContent: string = ws.getCell(i, j).getValue().toString().trim(); if (configContent != "") { let config: string = ws.getCell(headersRow, j).getValue().toString().trim(); variable[config] = configContent; console.log(config + ": " + variable[config]); } }; let validValContent: string = ws.getCell(i, 5).getValue().toString().trim(); if (validValContent != "") { do { let equalSignIndex: number = validValContent.indexOf("="); let validValue: clsValidValue = { CodedValue: validValContent.slice(0, equalSignIndex), UserString: validValContent.slice(equalSignIndex + 1), }; variable.ValidValues.push(validValue); ++i; validValContent = ws.getCell(i, 5).getValue().toString().trim(); newVariable = ws.getCell(i, 0).getValue().toString().trim(); } while (validValContent != "" && newVariable == ""); --i; } RDS.Variables.push(variable); } }; libContent.Modules.push(RDS); } }); return libContent; } interface clsLibraryContent { Filename: string; Modules: clsModule[]; } interface clsModule { TabName: string; Header: string; Description: string; Label: string; Name: string; KeyStructure: string; CurrentVersion: string; PreviousVersion: string; Comments: string; Variables: clsVariable[]; } interface clsVariable { Name: string; Label: string; Type: string; CollectionLength: string; Format: string; Class: string; Required: string; [Config: string]: string; ValidValues: clsValidValue[]; } interface clsValidValue { CodedValue: string; UserString: string; }
已尝试的排查动作
- 逐行回退代码,定位可能导致参数输入框消失的代码段
- 重新添加Excel连接器,排除连接配置问题
- 检查脚本语法,未发现语法错误
内容的提问来源于stack exchange,提问作者Kamil Zajęcki
相关产品推荐
相关产品推荐

