Импорт диапазона данных листа файлов гугл шит по ID диска с помощью appscript
Есть скрипт, который должен импортировать заданный диапазон с листов таблиц которые находятся на гугл диске, по ID гугл диска, но почему то он импортирует данные только 5 таблиц ,а на диске их 20
var files = DriveApp.getFolderById("17Ux9i0mK_RTuLbrjFrZDGoNl3AkcEdRS").getFiles();
while (files.hasNext()) {
var file = files.next();
var ss = SpreadsheetApp.getActiveSpreadsheet()
var copySheet = ss.getSheetByName("Лист1")
copySheet.getRange('A2:Z').clear
var ss1 = SpreadsheetApp.openById(file.getId())
var sheets = ss1.getSheetByName("Billing)
var sheetsRange = sheets.getDataRange()
var sheetsValues = sheetsRange.getValues()
let pasteRow = 1
sheetsValues.splice(0, 5)
copySheet.getRange(pasteRow+1, 1, sheetsValues.length, sheetsValues[0].length).setValues(sheetsValues)
pasteRow += sheetsValues.length
Logger.log(file.getName())
}
}
Ответы (1 шт):
Автор решения: Михаил Носаев
→ Ссылка
Попробуйте так:
function run() {
const ids = folderTree();
var copySheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1");
copySheet.getRange("A2:Z").clear();
let pasteRow = copySheet.getLastRow();
if (ids) {
for (i = 0; i < id.length; ++i) {
const values = SpreadsheetApp.openById(id[i])
.getSheetByName("Billing")
.getDataRange()
.getValues()
.splice(0, 5);
copySheet
.getRange(pasteRow + 1, 1, values.length, values[0].length)
.setValues(values);
pasteRow += values.length;
}
}
}
function folderTree(TARGET_FOLDER_ID = "17Ux9i0mK_RTuLbrjFrZDGoNl3AkcEdRS") {
// содержимое папки
try {
const files =
DriveApp.getFolderById(TARGET_FOLDER_ID).searchFiles(
'title != "nothing"'
);
let booksIds = [];
while (files.hasNext()) {
let xFile = files.next();
console.log("name >>>", xFile.getName(), "id >>>", xFile.getId());
booksIds.push(xFile.getId());
}
return booksIds;
} catch (e) {
console.log(e.stack);
}
}