Return范围作为全局变量Google张脚本

Return range as a global variable Google sheets script

我正在尝试创建已解析 json 数据的全局变量。

我想在其他函数中使用全局变量

json 解析效果很好,但我在全局变量创建方面运气不佳

async function GETELEMENTS(url) {
  var response = await UrlFetchApp.fetch(url);
  var responseText = await response.getContentText();
  var responseJson = JSON.parse(responseText);
  var elementKeys = Object.keys(responseJson.elements[0]);
  
  var data = responseJson.elements.map(e => elementKeys.map(f => {
      return e[f] instanceof Array ? e[f].join('|') : e[f];
  }));
  data.unshift(elementKeys);
  
  if(data.length==0)
   return;
 
  }
  
  var cache = CacheService.getScriptCache();
  cache.put('A', data);
  var cache = CacheService.getPublicCache();

  return data;
}


其中 cache.get('A') 本质上是 SpreadsheetApp.getActive().getDataRange().getDisplayValues(); 返回数据

然后在不同的函数中,我想使用

myotherfunction(cache.get('A'));

您可以在每个函数的data 外部声明它会自动成为一个全局变量。

最小可重现示例:

var data;

function GETELEMENTS() {
  data = 'I was defined!';
}


function myotherfunction(){

  Logger.log(data); // -> output: null
  GETELEMENTS();
  Logger.log(data); // -> output: I was defined!

}

如果您执行 myotherfunctionGETELEMENTS()之后data将会有在 GETELEMENTS().

中定义的值 I was defined!