Запрос выборки Post не работает в пользовательских функциях Office Addin [Ошибка типа: сбой сетевого запроса] - PullRequest
0 голосов
/ 30 октября 2018

Я столкнулся с этой ошибкой в ​​надстройке Excel для пользовательских функций, где я пытаюсь вызвать внешний сервис внутри пользовательской функции. Он отлично работает для запроса GET, например:

function stockPrice(ticker) {
var url = "https://api.iextrading.com/1.0/stock/" + ticker + "/price";
return fetch(url)
    .then(function(response) {
        return response.text();
    })
    .then(function(text) {
        return parseFloat(text);
    });
}

CustomFunctionMappings.STOCKPRICE = stockPrice;

Взято из https://docs.microsoft.com/en-us/office/dev/add-ins/excel/excel-tutorial-custom-functions#create-a-custom-function-that-requests-data-from-the-web

Но выдает исключение для запроса POST, например:

function stockPrice(ticker) {
var url = "https://westcentralus.api.cognitive.microsoft.com/text/analytics/v2.0/sentiment";
return fetch(url, {
        method: 'POST',
        headers: {
            'Ocp-Apim-Subscription-Key': key,
            'Content-Type': 'application/json',
            'Accept': 'application/json'
        },
        body: JSON.stringify(body))
    .then(function(response) {
        return response.json();
    })
    .then(function(response) {
        return response.somevalue;
    })
    .catch(e => {
        console.error("Caught exception");
        return JSON.stringify(e);
     });
}

Выше приведен пример того, как я называю свою службу. Я пробовал это с 2-3 различными сервисами, и я понял, что после запуска fetch код переходит к блоку catch, а значение ошибки, которое возвращается в excel, является пустым объектом '{}'. Поскольку нет никаких способов отладки пользовательских функций в Windows, и поскольку нет конкретного описания ошибки, я не могу выяснить проблему. Я также добавил свой служебный домен в список доменов приложения в файле манифеста, но по-прежнему не действует.

1 Ответ

0 голосов
/ 31 октября 2018

Я не уверен, что конкретный API принимает запросы POST, поэтому вы можете столкнуться с этим.

Отладка в Windows все еще продолжается, но вы можете использовать Excel онлайн и F12tools для отладки.

Если вы работаете в Windows, вы можете использовать операторы console.log вместе с ведением журнала времени выполнения: https://docs.microsoft.com/en-us/office/dev/add-ins/excel/custom-functions-best-practices#troubleshooting

Надеюсь, что это поможет, и мы обновим это, когда будет готова отладка для пользовательских функций на рабочем столе Windows.

...