Я столкнулся с этой ошибкой в надстройке 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, и поскольку нет конкретного описания ошибки, я не могу выяснить проблему. Я также добавил свой служебный домен в список доменов приложения в файле манифеста, но по-прежнему не действует.