Google Apps Script直接方法赋值与变量中转赋值的技术差异
直接赋值与变量中转赋值的技术差异说明
两种写法的核心差异是函数的调用次数和调用时机,你提供的Google Apps Script代码中thissheet.vaFn和thissheet.vaVar的具体区别如下:
function getSheet(shn) { var ss = SpreadsheetApp.getActive(); var sh = ss.getSheetByName(shn); var shrg = sh.getDataRange(); var shrgva = shrg.getValues(); var thissheet = { vaFn:shrg.getValues(), vaVar:shrgva }; return thissheet; }
- 调用次数差异:
vaVar使用的是提前调用shrg.getValues()后存在变量里的结果,赋值时不会再次执行读取接口;vaFn赋值时会单独再执行一次shrg.getValues(),这段代码总共会触发2次表格数据读取请求。 - 数据一致性差异:如果两次
getValues()执行的间隙,表格内容被修改(手动操作或脚本其他逻辑修改),两个属性存储的二维数组内容就会不同;如果两次调用期间表格没有变动,二者存储的内容完全一致,但属于互相独立的数组对象,修改其中一个的元素不会影响另一个。 - 性能与配额差异:
getValues()是Google Sheets的远程IO接口,每次调用都会消耗服务调用配额,表格数据量大时会明显增加脚本运行耗时,多调用一次属于不必要的性能浪费,更推荐先存储到变量再复用的写法。
两种写法无感知差异的场景
如果你调用的是无副作用的纯函数,相同输入永远返回相同结果,且不需要修改返回的引用类型内容时,两种写法的使用效果没有明显区别。
内容的提问来源于stack exchange,提问作者Jason Torpy
相关产品推荐
相关产品推荐

