javascript - 将范围作为全局变量返回 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'));
解决方案
您可以在每个函数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()
。
推荐阅读
- r - 了解闪亮的 session$onFlush
- javascript - 如何根据javascript中的语言环境格式化数字?
- laravel - 在延迟加载查询 Laravel 中选择特定列
- c# - 为什么我要选择私有只读自动属性而不是只读字段?
- c# - Autofac - IHTTPClientFactory 多线程
- python - 如何使用 python selenium 进行自动化滚动
- javascript - Django 部署后错误
- python - 如何获得检查的最终结果 [PYTHON]
- office-js - Office Word 加载项 JS - 如何避免加载项执行的操作出现在撤消历史记录中
- python - 查找文件夹中所有文件的行数