历史版本15 :常用函数集合插件 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1.描述编辑

把一些常用的函数放到常用函数集合插件里面来,方便用户使用

设计器插件安装方法参照插件的安装管理

服务器安装插件方法参照服务器上安装插件

函数 
详细 
  ScriptEval  该函数中可以使用javascript脚本,避免嵌套各种IF,SWITCH函数的写法。
  StringReverse  把给定的参数字符串做倒转。
  StringFind  查找第一个匹配的字符串,支持从头开始查找和从尾部开始查找。
  StringMatch  判断字符串是否符合给定的正则表达式。
  StringFetch  根据正则表达式抓取给定字符串中匹配的部分,以数组形式返回。
  StringPinyin  将中文转换为拼音。
  StringShortPinyin  将中文装换为拼音首字母。
  StringSwapCase  将字符串中的大小写字母调换大小写。StringSwapCase("abcDEF") 返回ABCdef。
  NumberToEnglish  将数字转换成英文。NumberToEnglish(1234567)将返回One Million, Two Hundred And Thirty-Four Thousand, Five Hundred And Sixty-Seven。
  GetIP  获取当前访问的用户的IP地址。
 ProcessErrorValue 处理函数返回错误值,一般函数发生错误时,会输出#ERROR_NAME之类的,这个函数可以在函数返回值为错误值的时候,输出自定义的值,其他值不变。

 JSONPathFinder 从JSON文本中查找符合条件的结果,JSON支持文本、文件路径以及URL。安装该插件后,可以在单元格中写上公式=JSONPathFinder("http://7xs469.com1.z0.glb.clouddn.com/test.json", "$.store.book[*].author")查看结果。
 MathFrequency 统计单词出现的次数和平率。MathFrequency([1, 3, 2, 4, 2], 3)返回1,表示数组中3出现了一次,如果给定了第三个参数,则返回0.2,表示3出现的频率为0.2。
 MathVariance

 求数组中元素的方差。
 MathStandardDeviation 求数组中元素的标准差。
 MathSumOfSquares

 求数组中元素的平方和。
 MathGeometricMean 求数组中元素的几何平均数。
 MathMean 求数组中元素的算术平均数。
 EncryptShaHex SHA加密。
 EncryptSha256Hex SHA256加密。
 EncryptSha384Hex SHA384加密。
 EncryptSha512Hex SHA512加密。
 EncryptMd5Hex MD5加密。
 EncryptDes DES加密。
 DecryptDes
 DES解密。

2.SciptEval函数编辑

安装插件后,可以在SciptEval函数中使用JavaScript语法。

2.1参数说明

ScriptEval(参数,参数名1,参数值1,参数名2,参数值2,……):第一个参数需要是一个字符串,字符串中是一个合法的JavaScript表达式,后续的参数分别表示JavaScript的参数名1,参数值1,参数名2,参数值2等等,由于参数名和参数值总是成对出现的,所以总的参数的个数必须是奇数个。设定的参数名可以在JavaScript中使用。

注:对JavaScript表达式的唯一要求是符合JavaScript语法并且有返回值。例如ScriptEval('return Math.max(p1, p2)', "p1", A1, "p2", B1),等价于max(A1, B1)。

2.2使用ScriptEval函数进行公式中判断

在模板中A4格式是一个扩展格子(向下扩展),值为[1,2,3,4,5],加入我们需要让B4格子的值满足以下条件

当A4的值大于4的时候,返回A4 * 2的值,当A4的值小于4且大于1的时候,返回A4减2的绝对值,其他时候,返回A4的A4的2次方。

如果用传统的函数,写法:

if(A4 > 4, A4 * 2, if(and(A4 < 4, A4 > 1), abs(A4 - 2), power(A4, 2)))

而如果使用ScriptEval函数写法:

ScriptEval('if(a > 4) {return a * b;} else if (a < 4 && a > 1){return Math.abs(a - b);} else {return Math.pow(a, b)}', "a", A4, "b", 2)

可以看到结果完全没有差别,但是使用JavaScript语法有更灵活实现和更丰富的表达方式。

2.2使用ScriptEval函数进行数组过滤
ScriptEval('var r = [];origin.forEach(function(item, i){if(item % 2 == 0){r.push(item);}});return r;',"origin",A4)

在单元格中写上如上的公式,可以过滤出A4中所有的偶数值并作为一个数组返回。

3.JSONPathFinder函数编辑

在做报表的时候,并非所有的数据都是报表能直接识别的字符串或者数组,有时候是以JSON格式传递过来的数据,这个时候,我们就需要使用JSONPathFinder函数来针对不同的查询条件获取到我们想要的数据。

假如有这样的JSON结构的数据,见这里。这是一个描述书店的JSON数据,现在需要从里面查询出所有价格小于10的书的名字,只需要这样写公式即可:

=JSONPathFinder("http://7xs469.com1.z0.glb.clouddn.com/test.json", "$.store.book[?(@.price <10)].title")

符合条件的书共有两本,所以这个公式将会返回一个数组:[Sayings of the Century,Moby Dick],可以设置该公式所在的格子向下扩展,就会看到两行数据了。