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!
}
如果您执行 myotherfunction
,在行GETELEMENTS()
之后data
将会有在 GETELEMENTS()
.
中定义的值 I was defined!
我正在尝试创建已解析 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
将会有在 GETELEMENTS()
.
I was defined!