Как включить внешний JavaScript для использования в пользовательских функциях Excel? - PullRequest
0 голосов
/ 21 февраля 2019

РЕДАКТИРОВАТЬ: Добавлен упрощенный сценарий и шаги для воспроизведения в конце вопроса.Обратите внимание, что цель состоит в том, чтобы включить внешний скрипт в Excel-Desktop, а не заставить упрощенный сценарий работать другими способами.


Мы все знаем и любим акциипример цены для пользовательских функций, где актуальная цена акций запрашивается у источника с помощью 'fetch':

https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows#create-a-custom-function-that-requests-data-from-the-web

Если для получения цен на акции был внешний API,это также может быть использовано?Например:

                   Stock Price Source
                           |  <----------- API knows how to get the stock price
           External Stock Price API Javascript Library
                           |  <----------- javascript function calls here
                    customfunctions.js
                           |
                         Excel

Иными словами, может ли проект JavaScript с пользовательскими функциями включать внешний скрипт, например

<script type="text/javascript" src="https://example.com/stock-price-api.js />

Я пытался включить такую ​​ссылку в индекс html проекта пользовательских функций.файл, включающий URL-адрес сценария в манифесте в AllFormFactors / ExtensionPoint для «xsi: type = CustomFunctions», добавил ссылку на сценарий в «Resources / bt: Urls» и различные их комбинации, но сценарий не выглядит как «известны самим пользовательским функциям (HTML-файл индекса при загрузке в браузер знает о скрипте, поэтому я знаю, что ссылка верна).Все, что я пробовал, - это работа с догадками, потому что я не нашел никакой документации относительно использования внешних API.Я пытаюсь заставить это работать для Excel на рабочем столе Windows (64-разрядная версия).

Можно ли это сделать?


РЕДАКТИРОВАНИЕ / ОБНОВЛЕНИЕ: только что подтвердил, что он работает нормально для Excel Online, просто включив внешний скрипт в файл index.html примера проекта.Это предназначено для работы в Excel Desktop?


Чтобы воспроизвести проблему:

  1. Следуйте учебному руководству для создания проекта основных пользовательских функций (с использованием опции машинописного текста)) и убедитесь, что они работают (https://docs.microsoft.com/en-us/office/dev/add-ins/tutorials/excel-tutorial-create-custom-functions?tabs=excel-windows)

  2. Создайте файл javascript «globalapi.js» и поместите его в папку «dist / win32 / ship» (та же папка, которая содержит пользовательскую функцию).javascript). Просто объявите глобальную переменную в файле «globalapi.js» следующим образом:

    var someGlobalString = 'This is a global string';
    
  3. Включите скрипт «globalapi.js» в файл «index.html»; все включенные сценарии:

    <script src="https://officedev.github.io/custom-functions/lib/custom-functions-runtime.js" type="text/javascript"></script>
    <script src="dist/win32/ship/globalapi.js" type="text/javascript"></script>
    <script src="dist/win32/ship/index.win32.bundle" type="text/javascript"></script>
    
  4. Измените функцию «add» в файле «customfunctions.ts», чтобы она возвращала что-то другое, если определено «someGlobalString»:

    declare var someGlobalString: any;
    
    function add(first: number, second: number): number {
      if (typeof someGlobalString !== 'undefined') {
         return 99999;
      }
      return first + second;
    }
    

Теперь введите пользовательскую функцию '= CONTOSO.ADD (1,2)' в ячейку в Excel. Для Excel Desktop (началось с 'npm run sideload') результатв ячейке отображается «3», для Excel Online (после загрузки человекаесли есть) результат «99999».

Чем можно объяснить разницу?

1 Ответ

0 голосов
/ 23 февраля 2019

Извините, сейчас есть ошибка в последней сборке Windows с веб-запросами в сборке Windows 16.0.11406.20002.

https://github.com/OfficeDev/Excel-Custom-Functions/issues/115

Мы обновим эту проблему, как толькоследующая сборка выкатывается на канал инсайдеров.

спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...