Я удивлен, что этот код работает без обещаний или асинхронных c, если он действительно выполняет выборку URL. Или это макет?
В любом случае, вместо al oop и Array.pu sh, вы можете просто использовать Array.map для преобразования данных.
Кроме того, вы можно использовать шаблонную строку вместо конкатенации строк.
function get_All_Projects() {
const options = {
method: "get",
headers: {
Authorization: "Bearer " + tkft_token
}
};
const url = `${tkft_url}${endpoint}auth=${tkft_token}${pages}`
const response = UrlFetchApp.fetch(url, options);
const info = JSON.parse(response);
const content = info.data;
const project_arr = content.map(item => ({
Project_ID: item.id;
Project_Name: item.name;
Project_Start_Date: item.starts_at;
Project_End_Date: item.ends_at;
Project_Status: item.project_state;
}))
return project_arr
}
Затем вам нужно вызвать get_By_Users
с помощью project_arr
:
const allProjects = get_All_Projects()
get_By_Users(allProjects)
. Array.map.
async function get_By_Users(project_arr) {
var options = {
method: 'get',
headers: {
Authorization: 'Bearer ' + tkft_token
}
};
const makeUrl = p => `${tkft_url}projects/${p.Project_ID}/users?auth=${tkft_token}${pages}`
const safeJSONparse = item => {
try {
return JSON.parse(item)
} catch (e) {
return {data: undefined}
}
}
const data = project_arr.map(p =>
safeJSONparse(UrlFetchApp.fetch(makeUrl(p), options)).data))
Logger.log(data);
}
Вы всегда должны пытаться / ловить с JSON .parse, потому что он выбрасывает, если не может проанализировать ввод. Затем вам нужно решить, как ваше приложение будет вести себя, когда это произойдет. 20% кодирования заставляют его работать. Остальные 80% - это кодирование того, что происходит, когда это не работает.
См. эту статью , для чего нужно использовать Array.map, и этот , почему использовать const
.