Как насчет этой модификации?
Точки модификации:
- В вашем скрипте один и тот же диапазон
getRange(2 + j, 1)
используется в качестве начального диапазона каждый раз в l oop. При этом значения перезаписываются новым content
. - В этой модификации для l oop для
content
удаляется и помещаются значения вне для l oop. Полученный content
добавляется к массиву contents
в 1-м для l oop. Таким образом, все значения content
(contents
) могут быть помещены в лист Team
с помощью setValues
. Кроме того, можно немного снизить стоимость процесса.
Измененный скрипт:
При изменении вашего скрипта, пожалуйста, измените следующее.
От:
var team_array = [];
for (var i = 0; i < range1.length; i++) {
if (range1[i][0] >= behind && range1[i][0] <= ahead) {
var lastRow = sheet.getRange(2 + i, 1, 1, 8).getValues();
var dateval = lastRow[0][2]
var data = {'project_id': lastRow[0][3]};
var options = {method: 'get',headers: {Authorization: 'Bearer ' + AUTH}};
var url = tknurlL + Endpoint + data.project_id + '/users?auth=' + AUTH
var response = UrlFetchApp.fetch(url, options);
var team = JSON.parse(response);
var content = team.data;
team_array.push(content);
var ss = SpreadsheetApp.getActive().getSheetByName('Team');
const lr = sheet.getLastRow();
for (var j = 0; j < content.length; j++) {
ss.getRange(2 + j, 1).setValue(content[j].id);
ss.getRange(2 + j, 2).setValue(content[j].first_name);
ss.getRange(2 + j, 3).setValue(content[j].last_name);
ss.getRange(2 + j, 4).setValue(content[j].display_name);
ss.getRange(2 + j, 5).setValue(content[j].email);
ss.getRange(2 + j, 6).setValue(content[j].user_type_id);
ss.getRange(2 + j, 7).setValue(content[j].role);
}
}
}
По :
var contents = []; // Added
var team_array = [];
for (var i = 0; i < range1.length; i++) {
if (range1[i][0] >= behind && range1[i][0] <= ahead) {
var lastRow = sheet.getRange(2 + i, 1, 1, 8).getValues();
var dateval = lastRow[0][2]
var data = {'project_id': lastRow[0][3]};
var options = {method: 'get',headers: {Authorization: 'Bearer ' + AUTH}};
var url = tknurlL + Endpoint + data.project_id + '/users?auth=' + AUTH
var response = UrlFetchApp.fetch(url, options);
var team = JSON.parse(response);
var content = team.data;
team_array.push(content);
contents = contents.concat(content); // Added
}
}
// I added below script.
if (contents.length > 0) {
var dstSheet = SpreadsheetApp.getActive().getSheetByName('Team');
var values = contents.map(e => ([e.id, e.first_name, e.last_name, e.display_name, e.email, e.user_type_id, e.role]));
dstSheet.getRange(2, 1, values.length, values[0].length).setValues(values);
}
Ссылка: