尝试:Script Lab,Excel 基础操作(1)

准备工作

Script Lab 在 2018 年经历了一次从头到尾的重新编写。虽然其视觉设计与 2017 版保持相似,但其技术堆栈已经过大修,为了能够利用 React 和 Fabric React 的优秀性质。改进包括了:键盘可访问性、更快的运行速度、用户可配置的设置

但是为了保持代码的简洁性,思来想去还是牺牲以上优点,从当前默认环境(Production)暂时切换到 2017 版本的 Script Lab ,为此需要执行以下操作:

  1. 打开编辑器窗格,然后选择或创建一个代码段;
  2. 在编辑器的右下角,单击cog图标以打开设置;
  3. 在页脚左侧下拉列表中,选择“Script Lab 2017”。

尝试:Script Lab,Excel 基础操作(1)


最小代码

【对像层级】

上下文:context

工作簿:workbook 

工作表:sheet 

单元格:cell


【单元赋值】单元值: [["HSOffice"]]


Excel.run
    (
    async (context) => {

        //
        const workbook = context.workbook;
        const sheet = workbook.worksheets.getActiveWorksheet();
        const cell = sheet.getCell(0, 0);

        //
        cell.values =
            [
                ["HSOffice"]
            ]
    }
    );


【小技巧】代码美化:Shift-Alt-F

尝试:Script Lab,Excel 基础操作(1)



Excel.run


我们先从代码第一行代码看起:Excel.run。在这里 Excel 是命名空间,而 run 而是一个启动函数(我暂时先这样称呼,直到找到官方的说法),接受一个函数作为其参数,前返回一个对像(后面会提到用途)。而这个内部函数,其实是一个批处理函数,代表了真正的 Excel 操作。

批处理函数有一个代表宿主请求的上下文参数,该参数是与宿主(在这里是 Excel 本身)进行通信的途径。Excel.run 方法只是传向批处理函数传递了一个新的上下文请求,批处理函数才是整个代码的核心部分,在这里我们看到了最常见的处理方式:


const workbook = context.workbook;

其实更典型的写法,要会加上错误捕获的部分。补充一点,Excel.run 其实还会返回一个 Promise 对象(Promise在处理异步操作非常有用)。反正更为正统的写法是,在启动函数之后应该始终跟随.catch(错误捕获),示例如下:

//启动函数
Excel.run
    (


    //批处理函数
    function (context) {
        //批处理内容

        //返回代理
        return context.sync();
    }
    ).catch
    (
        //异常处理
    );


尝试:Script Lab,Excel 基础操作(1)

上一篇:JavaScript中的工厂方法、构造函数与class


下一篇:Java面向对象高级--继承的应用----整形数组类、排序类、反转类