Как скопировать данные из .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 шт):

Автор решения: Prianichkin Sergey

Насколько мне известно, 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);
→ Ссылка