自定义函数 JSAFETCH4 在单元格中返回请求响应的异步数据
function JSAFETCH4(url, init) { // 批注法
url = url.valueOf();
init = (init === undefined || init === -2147352572) ? undefined : JSON.parse(init.valueOf());
let rng = Application.Caller();
if (rng.Comment != null) {
const text = rng.Comment.Text();
rng.Comment.Delete();
return text;
}
function addCommentDirtyCalculate(text) {
rng.AddComment(text);
rng.Dirty(); // 标记为脏单元格。
if (Application.Calculation == xlCalculationManual) { // 自动重算:xlCalculationAutomatic、手动重算:xlCalculationManual
rng.Calculate(); // 手动重算模式,需设置此项,相当于手动进入单元格按Enter或按F9。自动重算模式,不需要设置此项。
}
}
return (async () => {
let response = await fetch(url, init);
if (!response.ok) {
const statusAndStatusText = `HTTP ${response.status}: ${response.statusText}`;
addCommentDirtyCalculate(statusAndStatusText);
return statusAndStatusText;
}
const text = await response.text();
addCommentDirtyCalculate(text);
return text;
})();
}插入函数对话框、函数参数对话框:
加载宏文件function Workbook_Open(){}中添加以下代码。
Application.MacroOptions("JSAFETCH4","发起获取资源的请求,返回一个会在请求响应后兑现的promise。该promise会兑现一个表示请求响应的Response对象。",undefined,undefined,undefined,undefined,14,undefined,undefined,undefined,["想要获取的资源的URL。","一个可选对象的JSON格式,包含希望被包括到请求中的各种自定义选项。"])