Поделиться через


Работа с режимом предварительного просмотра значений формул в пользовательских функциях

Вы можете управлять тем, как пользовательская функция вычисляет результаты при участии в режиме предварительного просмотра значений формул. Режим предварительного просмотра значений формул — это функция, которая позволяет конечным пользователям выбирать части формулы при редактировании ячейки для предварительного просмотра значений. Эта функция помогает пользователям оценивать формулу при ее редактировании. На следующем рисунке показан пример изменения формулы и выделения текста A1+A2. В режиме предварительного просмотра формулы отображается приведенное выше значение 7 .

Снимок экрана: редактор формул Excel с выбранным параметром A1+A2 и предварительным просмотром 7 над редактором формул.

По умолчанию пользователь может просмотреть пользовательские функции (например =getHousePrice(A1), ). Однако в следующем списке показаны некоторые сценарии, в которых может потребоваться управлять тем, как пользовательская функция участвует в режиме предварительного просмотра значений формул.

  • Пользовательская функция вызывает один или несколько API, которые взимают плату за их использование.
  • Пользовательская функция обращается к одному или нескольким скудным ресурсам, таким как базы данных.
  • Для вычисления результата настраиваемой функции требуется значительное время, и это не будет полезно для пользователя во время предварительной версии.

Вместо этого можно изменить поведение пользовательской функции, чтобы вернуть макетное значение. Для этого используйте свойство только для invocation.isInValuePreview чтения. В следующем примере кода показан пример пользовательской функции с именем getHousePrice , которая ищет цены на жилье с помощью монетизированного API. Если isInValuePreview имеет значение true, пользовательская функция возвращает макетный номер для использования и позволяет избежать каких-либо затрат. Если isInValuePreview имеет значение false, пользовательская функция вызывает API и возвращает фактическое значение цены на жилье для использования в электронной таблице Excel.

/**
 * Get the listing price for a house on the market for the given address.
 * @customfunction
 * @param address The address of the house.
 * @param invocation Custom function handler.
 * @returns The price of the house at the address.
 */
export function getHousePrice(address: string, invocation: CustomFunctions.Invocation): number {
  // Check if this call is for formula value preview mode.
  if (invocation.isInValuePreview) { 
    // Avoid long-running expensive service calls. 
    // Return a useable but fake number.
    return 450000; 
  } else { 
    // Make the actual service calls in this block. 
    const price = callHouseServiceAPI(address);
    return price; 
  } 
}

См. также