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