使用office.js在线复制粘贴循环到多个Excel范围时出错

问题描述

我正在尝试使用公式填充多个范围,然后使用粘贴作为值将范围转换为值。 Web的Sharepoint Excel上正在使用Office加载项。该代码通常可以正常工作,但偶尔会出现“ Rich API:发生内部错误”错误,由于该错误,公式不会被值替换。第一次之后,该错误在以后的每次尝试中均会发生,并因“ Rich API:Timeout”错误而崩溃。大约有300个范围,大小约为25x25。

代码:

async function loadValues() {
        //This function is exectued to fill some ranges after data is retrived from server and pasted in a bacckend table
        await Excel.run(async function main(context) {
            context.workbook.application.calculationMode = "Manual";
            let names = context.workbook.names
            context.application.suspendScreenUpdatingUntilNextSync();
            var rng = names.getItem("controlsToUse").getRange();
            rng.load("values");
            await context.sync();
            context.application.suspendScreenUpdatingUntilNextSync();
            // Controls to use contains the name of the ranges in which data has to be loaded and the ranges from which formula to load data has to be copied
            var controlsToUse = rng.values;
            for (i = 0; i < controlsToUse.length; i++) {
                // str is the range in which data has to be pasted and str1 is the range from which formula has to be copied
                var str = controlsToUse[i][0];
                var str1 = controlsToUse[i][1];
                var range1 = names.getItem(str).getRange();
                range1.copyFrom(str1,Excel.RangeCopyType.formulas);
                range1.untrack();
            }
            await context.sync();
            context.workbook.application.calculate();
            await context.sync();
            context.application.suspendScreenUpdatingUntilNextSync();
            for (i = 0; i < controlsToUse.length; i++) {
                var str = controlsToUse[i][0];
                var range1 = names.getItem(str).getRange();
                range1.copyFrom(str,Excel.RangeCopyType.values);
                range1.untrack();
            }
            await context.sync();
            context.workbook.application.calculationMode = "Automatic";
            await context.sync();
        }).catch(errorHandler)
    }

解决方法

您能注释掉context.runtime.enableEvents = false;并检查它是否有效吗?

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...