Office365 如何通过脚本实验室而不是控制台日志查看excel API结果、excel工作表(单元格)中的自定义函数?

Office365 如何通过脚本实验室而不是控制台日志查看excel API结果、excel工作表(单元格)中的自定义函数?,office365,office-js,office-addins,custom-functions-excel,Office365,Office Js,Office Addins,Custom Functions Excel,我正在office 365中使用Script lab,在编写从API(url)获取数据的函数时遇到了困难。我需要帮助将下面的代码与Java脚本中的自定义函数合并 从下面的代码中,我可以在脚本实验室控制台中获得API结果,但我希望在excel屏幕(单元格)中获得最终结果。目前我可以看到所有的ticker.name,而不是具体的 var request = new XMLHttpRequest(); request.open("GET", "https://api.coinmarketcap.co

我正在office 365中使用Script lab,在编写从API(url)获取数据的函数时遇到了困难。我需要帮助将下面的代码与Java脚本中的自定义函数合并

从下面的代码中,我可以在脚本实验室控制台中获得API结果,但我希望在excel屏幕(单元格)中获得最终结果。目前我可以看到所有的ticker.name,而不是具体的

var request = new XMLHttpRequest();

request.open("GET", "https://api.coinmarketcap.com/v1/ticker/", true);
request.onload = function() {
  // Begin accessing JSON data here
  var data = JSON.parse(this.response);

  if (request.status >= 200 && request.status < 400) {
    data.forEach((ticker) => {
      console.log(ticker.name, ticker.rank);
    });
  } else {
    console.log("error");
  }
};

request.send();
var-request=new-XMLHttpRequest();
请求。打开(“获取”https://api.coinmarketcap.com/v1/ticker/“,对);
request.onload=函数(){
//从这里开始访问JSON数据
var data=JSON.parse(this.response);
如果(request.status>=200&&request.status<400){
data.forEach((股票代码)=>{
控制台日志(ticker.name、ticker.rank);
});
}否则{
控制台日志(“错误”);
}
};
request.send();

对于最终结果,我应该在excel单元格中键入=coinmarket.rank(比特币),结果应该显示比特币在其他加密货币列表中的排名

您看过这个主题吗

它向您展示了如何在自定义函数中发出web请求。我建议使用Fetch,但它也向您展示了如何执行XHR请求:

/**
*获取给定Github组织或用户和存储库的星数。
*@customfunction
*@param userName组织或用户的字符串名称。
*@param repoName存储库的字符串名称。
*@返回星星数。
*/
异步函数getStarCount(用户名:string,repoName:string){
常量url=”https://api.github.com/repos/“+用户名+”/“+名称;
设xhttp=newXMLHttpRequest();
返回新承诺(功能(解决、拒绝){
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState!==4)返回;
如果(xhttp.status==200){
解析(JSON.parse(xhttp.responseText.watchers\u count);
}否则{
拒绝({
状态:xhttp.status,
statusText:xhttp.statusText
});
}
};
xhttp.open(“GET”,url,true);
xhttp.send();
});
}

您看过这个主题吗

它向您展示了如何在自定义函数中发出web请求。我建议使用Fetch,但它也向您展示了如何执行XHR请求:

/**
*获取给定Github组织或用户和存储库的星数。
*@customfunction
*@param userName组织或用户的字符串名称。
*@param repoName存储库的字符串名称。
*@返回星星数。
*/
异步函数getStarCount(用户名:string,repoName:string){
常量url=”https://api.github.com/repos/“+用户名+”/“+名称;
设xhttp=newXMLHttpRequest();
返回新承诺(功能(解决、拒绝){
xhttp.onreadystatechange=函数(){
如果(xhttp.readyState!==4)返回;
如果(xhttp.status==200){
解析(JSON.parse(xhttp.responseText.watchers\u count);
}否则{
拒绝({
状态:xhttp.status,
statusText:xhttp.statusText
});
}
};
xhttp.open(“GET”,url,true);
xhttp.send();
});
}

感谢您的快速回复。我试过了,但在某个地方我仍然犯错误。我也想知道为什么我不能在脚本实验室注册超过5个函数?我目前在每月频道(目标),版本1908(版本11911.20000)。当我注册第六个函数时,最后一个注册的函数就过时了。目前,当我在脚本实验室界面中注册一个新函数时,我看到了(“预览”)。这与我在office insider上时遇到的问题相同,一次只能注册一个功能。感谢您的快速回复。我试过了,但在某个地方我仍然犯错误。我也想知道为什么我不能在脚本实验室注册超过5个函数?我目前在每月频道(目标),版本1908(版本11911.20000)。当我注册第六个函数时,最后一个注册的函数就过时了。目前,当我在脚本实验室界面中注册一个新函数时,我看到了(“预览”)。这与我在office insider上时的问题相同,我一次只能注册一个功能。