“ Excel.run”是否不适用于用户定义的函数?

问题描述 投票:0回答:1

是否可以使用Excel.run从工作簿中获取数据,然后使用该数据来计算UDF以及参数?我知道您可以从互联网上获取数据并提供一个数字(https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows请参见标题“创建从网络请求数据的自定义函数”)下面的“我的Excel示例”

/**
 * Bending (Minutes)
 * @customfunction bendingMinutes
 * @param {number} lotRun
 * @param {number} bendLengthInches
 * @param {number} numOfBends 
 * @param {number} easy1OrHard2
 * @returns {number} bendingMinutes
 */
async function bendingMinutes(lotRun, bendLengthInches, numOfBends, easy1OrHard2) {
  try {
    let procEff;
    let secsPerBend;
    await Excel.run(async (context) => {
      const rangeProc = context.workbook.worksheets.getItem("Table").getRange("A2:B7");
      const rangeSecs = context.workbook.worksheets.getItem("Table").getRange("D2:E7");
      procEff = context.workbook.functions.lookup(lotRun, rangeProc);
      secsPerBend = context.workbook.functions.lookup(bendLengthInches, rangeSecs);
      procEff.load('value');
      secsPerBend.load('value');
      await context.sync();
      const response = await fetch(procEff.value);
      const response1 = await fetch(secsPerBend.value);
      console.log(procEff.value);
      console.log(secsPerBend.value);
    });
    if (easy1OrHard2 == 1) {
      return (secsPerBend.value * numOfBends / procEff.value / 60);
    } else {
      return ((secsPerBend.value * numOfBends / procEff.value / 60) * 1.2);
    }
  } catch (errorHandlerFunction) {
  };
}

enter image description here

enter image description here

javascript excel user-defined-functions office-js office-js-helpers
1个回答
3
投票

当前,自定义函数不支持调用Excel JS API。您可以使用SharedApp模式在自定义函数(https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/share-data-and-events-between-custom-functions-and-the-task-pane-tutorial)中调用Excel JS API,我是否知道为什么要从API而不是自变量中获取表信息?如果使用API​​来获取它们,则更新表中的值将不会重新计算自定义函数。

© www.soinside.com 2019 - 2024. All rights reserved.