首页 > 解决方案 > 将范围作为全局变量返回 Google 表格脚本

问题描述

我正在尝试创建解析的 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'));

标签: javascriptgoogle-apps-scriptgoogle-sheetsglobal-variables

解决方案


您可以在每个函数data 之外声明,它将自动成为全局变量。

最小的可重现示例:

var data;

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


function myotherfunction(){

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

}

如果您执行 myotherfunction,则该行GETELEMENTS()之后data将具有 中I was defined!定义的值GETELEMENTS()


推荐阅读