Как скопировать данные из .xlsx файла в Google Drive через Google Apps Script в Google Sheet?
У меня задача такова: У меня есть папка в Google Drive В этой папке несколько файлов Excel (.xlsx) Через Google Apps Script я делаю функцию суть которой копировать из этих файлов данные и переносить их в первую пустую ячейку Google Sheet.
function копироватьИВставлять() {
var папкаНазвание = "Проверка";
var папка = DriveApp.getFoldersByName(папкаНазвание).next();
var файлы = папка.getFilesByType(MimeType.MICROSOFT_EXCEL);
while (файлы.hasNext()) {
var файл = файлы.next();
var spreadsheet = SpreadsheetApp.open(DriveApp.getFileById(файл.getId()));
var лист = spreadsheet.getSheets()[0];
var значение = лист.getRange("B1").getValue();
var пустаяСтрока = 1;
while (лист.getRange(пустаяСтрока, 1).getValue() !== "") {
пустаяСтрока++;
}
лист.getRange(пустаяСтрока, 1).setValue(значение);
}
}
Но выдает ошибку доступа:
Exception: Service Spreadsheets failed while accessing document with id 1jZA_oAyrVMnGdryCwZaucU8B1Uw5yFjb.
Я изначально подумал, что добавь в сервисы Drive API все решится, но ничего не изменилось. Ошибка доступа осталась.
Ответы (1 шт):
Насколько мне известно, SpreapsheetApp сервис работает только с Google Sheets.
This service allows scripts to create, access, and modify Google Sheets files
Поэтому Вам нужно сначала преобразовать файл из Excel формата в Google Sheets. Как вариант, использовать Google Drive API (отдельно нужно его подключить, там есть инструкция, если что). Например, вот так:
// xlsx - Это файл Excel на Гугл диске {DriveApp.File}
let file = Drive.Files.copy({title: 'tempxlsxtosheet'}, xlsx.getId(), {convert: true});
let ssX = SpreadsheetApp.openById(file.id);