You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 13:54:56