You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 20:45:03