【案例辅助学习JSA】AirScript宏与自动化流程组合解题思路以及学习如何动态获取表格区域

EnterZero
EnterZero

创作者俱乐部成员

本篇主要分享自动化流程中表格操作AS宏组合解题思路,并借用案例学习JSA的语法。

PS:目前本地端的JSA用法和在线端的AirScript用法已基本同步。

  • 今天案例是利用自动化流程中的《修改表格时》触发条件来执行AS宏

案例背景:如图模拟了4个表及一个表单,表单收集信息会填入销售信息数据表,正常的销售数据统计分析肯定会收集更全面的数据,表单收集信息将汇集在浅蓝色区域,深蓝色区域则需要我们手动去补全,这里就是使用自动化流程与AS宏组合来实现自动化补全信息。

PS:图片有点丑,将就欣赏哈!


Step 1 设定自动化流程的触发条件

选择触发工作表,生效范围选择指定列,选择列这里选择你想要触发条件的列,我这里选择的销售人员列。

触发条件设定好后第二步就是需要执行的操作,操作方式有很多,今天这里主要讲AS宏。

Step 2 编写补全信息的公式,将公式写入AS代码中

代码和注释如图:

let ws=Application.Sheets("销售信息收集");//固定好触发对象表格。
var row=ws.Range("A1").End(xlDown).Row;//获取增加的数据行号。
ws.Range(`g${row}`).Formula = `=XLOOKUP(E${row},产品明细表!B:B,产品明细表!C:D)`;//在新增数据行写入函数公式补全数据
ws.Range(`g${row}`).Replace("@","");//宏写入的数组函数公式会添加@限制数组扩展,去掉@让数组扩展。
ws.Range(`i${row}`).Formula = `=XLOOKUP(C${row},销售人员明细!E:E,销售人员明细!B:C)`;
ws.Range(`i${row}`).Replace("@","");

Step 3

效果演示:

表单触发

手动触发

PS:这里模拟的场景比较简单,主要分享解题思路。


Step 4

划重点语法说明

一、今天代码块中用到了End以及Row这2个方法,End()括号中有4个属性,分别是

向下:xlDown .End(xlDown).Row 向下获取最后一行行号

向上:xlUp .End(xlUp).Row 向上获取最后一行行号

向左:xlToLeft .End(ToLeft).Column 向左获取最后一行列号

向右:xlToRight .End(ToRight).Column 向右获取最后一行列号

实例代码演示=>

var fstcl=Range("g3").End(xlToLeft).Column,lstcl=Range("d3").End(xlToRight).Column;
var fsrow=Range("d14").End(xlUp).Row,lstrow=Range("d3").End(xlDown).Row;
console.log(`这个区域的初始行是${fsrow} 初始列是${fstcl} 最大行是${lstrow} 最大列是${lstcl}`)

PS:相信看到这儿大家已经学会了如何获取一个区域的边界行、列号了。

二、今天的代码中有几个符号我运用了很多次,也就是反引号 ` `与模板字符串${};为什么我不用双引号“”来标记字符串呢,那是因为模板字符串可以在字符串中引用代码块

先来一个实例代码演示=>

这里分别用两种方法输出了"11"这个字符串,第一种是直接用"+"链接了2个“1”字符串,第二种是利用反引号`+模板${}字符串的方式组合了"11"这个字符串,这里方法2中在模板字符串中引用了变量a。

看到这里可能有同学已经明白了我上文中如何利用此方法去获取表格的动态单元格区域了。恭喜你学会了如何利用End方法+反引号``+模板字符串${}来动态的获取边界行与列。

PS:这种方法在JSA中会大量使用,是最需要掌握的基础用法之一。

今天的案例学习到这里结束,有不懂的或者文中有错误的欢迎评论区指正,相互学习,谢谢!

下期JSA我将分享本地端JSA的事件触发功能,下期见!!

四川省
浏览 94
1
6
分享
6 +1
1 +1
全部评论