自定义函数 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格式,包含希望被包括到请求中的各种自定义选项。"])

云南省
浏览 295
2
5
分享
5 +1
2 +1
全部评论