Официальный API или способ проверить, является ли ячейка частью динамического массива

#ms-office #office-js

#ms-office #office-js

Вопрос:

Я привожу пример для проверки поведения JavaScript API над динамическим массивом.

Сначала я ввожу динамический массив =MUNIT(3) в ячейку A1 листа. Затем я понимаю, что все formulas[0][0] , formulaR1C1[0][0] и formulaLocal[0][0] по диапазону A1 возвращает =MUNIT(3) . Однако все formulas[0][0] , formulaR1C1[0][0] и formulaLocal[0][0] над другими ячейками, такими как B1 , A2 возвращает пустую строку.

Таким образом, существует ли официальный JavaScript API или официальный способ проверить, находится ли ячейка типа B1 в пределах диапазона динамического массива?

PS: я думаю, один из способов — проверить, является ли формула ячейки пустой, а ее значение непустым, но я надеюсь, что есть способ получше.

Ответ №1:

Да, вы могли бы попробовать наш бета-API, который скоро выйдет, range.hasSpill и вы также можете получить родительский код с помощью range.getSpillParent() , вот пример кода, который вы могли бы попробовать.

   await Excel.run(async (context) => {
    // Check the current cell for any spill parents or spilling-to ranges.
    const currentRange = context.workbook.getSelectedRange();

    currentRange.load("hasSpill");
    await context.sync();
    if (currentRange.hasSpill)
    {
      const spillParent = currentRange.getSpillParentOrNullObject();
      spillParent.load("address");
      await context.sync();
      console.log(`The selected cell has a spill parent: ${spillParent.address}`);

    }
  });
  

Пожалуйста, обратите внимание: для предварительного просмотра бета-API вам потребуется обратиться к бета-библиотеке на CDN
https://appsforoffice.microsoft.com/lib/beta/hosted/office.js