Получение значения элемента в массиве в сценариях Office

Я пытался сделать переменную равной значению определенного элемента в массиве, и я надеялся, что у кого-то есть предложение. В этом случае я пытаюсь получить значение в ячейке E5

  async function main(context: Excel.RequestContext){
   let workbook = context.workbook;
   let worksheets = workbook.worksheets;
   let sheet1 = worksheets.getItem("Sheet1");
   var currentMonth = 1 

   var months = sheet1.getRange("E5:AD5");
   months.load("values")
   await context.sync();
   monthValue = months[1][currentMonth].value
   console.log(monthValue.values)
}

Любая помощь будет принята с благодарностью!

1 ответ

Решение

tl;dr

+ Изменить months[1][currentMonth].value к months.values[0][currentMonth].

Детали

Здесь две проблемы. Во-первых, чтобы получить доступ к загруженным значениям, вам нужно написатьmonths.valuesкак показано здесь: https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-add-ins-ranges

Во-вторых, что с getRange("E5:AD5"), вы получаете одну строку значений. months.valuesтаким образом будет содержать значения в форме массива (строк), содержащего массив (столбцы), содержащий значения. Что-то типа:

[
  ["cell E5", "cell F5", "cell G5", ...]
]

Итак, одна строка, много столбцов.

Но делая months[1]вы пытаетесь получить доступ ко второй строке этого набора. Первая строкаmonths[0].

То же самое и со столбцами, первый столбец - индекс 0. Итак, значение первой ячейки вашего набора равноmonths.values[0][0].

Другие вопросы по тегам