如何从Javascript/Google App脚本中的另一个函数调用数组



我正在努力通过外部API获取总时间条目。该函数需要获取用户数据,其中包括保存在数组中的id。第二个函数需要调用此 ID 来获取数据范围的小时数并将它们相加并将它们保存在数组中。系统接口已 https://github.com/10Kft/10kft-api

这是我获取用户数据的第一个函数。

function get_users() {
// function loops through 10000ft  paginations and scrapes user data to array
var userarray = [];        
var lastpage  = false;
var page      = 1;
do{        
// gets 10kft data
var users = read10k_users(page);            
// writes data from current page to array
for (i in users.data) {
var rec     = {};
// pushing of mandatory data
rec.id      = users.data[i].id;
rec.display_name = users.data[i].display_name;
rec.email   = users.data[i].email;                
userarray.push(rec);
}
Logger.log(userarray)
// checks if this is the last page (indicated by paging next page link beeing null
if (users.paging.next != null) {
lastpage = false;
var page = page + 1;
} else {
lastpage = true;
}
}while (lastpage == false);
return (userarray);
}

我的第二个函数需要引用保存在数组中的 id,以便返回特定用户的总小时数,这就是我丢失的地方。

function get_timedata(id) {
// function loops through 10000ft  paginations and scrapes time entries to array
var timearray = [];        
var lastpage  = false;
var page      = 1;
do{
// gets time data from  10000ft 
var timedata = read10k_timedata(from_dt,to_dt,); 
// writes data from current page to array
for (i in timedata.data) {
var rec       = {};
// collection of time data from time entries endpoint
rec.id        = timedata.data[i].id;
rec.user      = timedata.data[i].user_id;
rec.hours_inc = timedata.data[i].hours;                 
// pushing  incurred hours      
if (rec.hours_inc >= 0 ) {
timearray.push(rec);                
}
//Logger.log(timearray)
}
// checks if this is the last page (indicated by paging next page link beeing null
if (timedata.paging.next != null) {
lastpage = false;
var page = page + 1;
} else {
lastpage = true;
}
}while (lastpage == false);        
return (timearray);
}

任何帮助将不胜感激。提前致谢

如果我理解正确,您希望:

  • 存储某个函数返回的 JavaScript 对象数组。
  • 在将来将使用的函数中使用此存储的数组。

如果正确,您可以使用属性服务来存储数据。此工具允许脚本将简单数据存储在键值对中。

现在,您只能存储字符串,并且想要存储JS对象的数组。因此,为了将其存储到脚本属性中,您首先必须使用 JSON.stringify((,它将 JavaScript 对象或值转换为 JSON 字符串。

稍后,当您想要使用数据时,您只需使用 JSON.parse(( 将字符串转换回对象数组。

工作流程:

因此,总结一下,get_usersuserarray转换为 JSON 字符串,并通过 setProperty(键,值(将其存储为脚本属性,如下所示:

var value = JSON.stringify(userarray);
var scriptProperties = PropertiesService.getScriptProperties();
scriptProperties.setProperty("your-key", value);

然后,每当你想要检索该数据(在get_timedata或另一个将调用这个的函数中(时,通过getProperty(key(检索属性,并将其转换为对象数组,如下所示:

var scriptProperties = PropertiesService.getScriptProperties();
var value = scriptProperties.getProperty("your-key");
var object = JSON.parse(value);

现在,您可以像访问原始数组一样访问数组中的不同ids(例如object[0]["id"](。

参考:

  • 物业服务
  • setProperty(key, value(
  • 获取属性(键(
  • JSON.stringify((
  • JSON.parse((

我希望这有什么帮助。

最新更新