Как можно с помощью Google Apps Script извлечь текст из ячейки Google Sheets вместо временного штампа?

Я переношу данные из Google Sheets в Google Docs. Строки с ячейками, содержащими текст, переносятся нормально, но строки с датами вызывают ошибку. Я выяснил, что проблема заключается в формате ячейки с датой: вместо ожидаемого "09.03.1980" я получаю "Sun Mar 09 1980 13:00:00 GMT+0500 (Yekaterinburg Standard Time)". Я использую метод sheet.getDataRange().getValues() для получения значений, но не нахожу в документации аналогичного метода, такого как ...getText(). Что мне делать в этой ситуации? Поделитесь, пожалуйста, советом.
  • 22 февраля 2025 г. 23:34
Ответы на вопрос 2
Чтобы извлечь текст из ячеек с датами в Google Sheets вместо временных меток, вы можете использовать метод `Utilities.formatDate()` для форматирования объектов даты. Ваша цель - получить дату в нужном формате, например "09.03.1980".

Вот пример скрипта, который демонстрирует это:

```javascript
function copyDataToGoogleDocs() {
  // Открываем Google Sheets и выбираем лист
  var spreadsheet = SpreadsheetApp.openById('Ваш_ID_таблицы');
  var sheet = spreadsheet.getActiveSheet();
  
  // Получаем все данные из таблицы
  var data = sheet.getDataRange().getValues();
  
  // Создаем новый документ Google Docs
  var doc = DocumentApp.create('Название документа');
  var body = doc.getBody();
  
  // Проходим по строчкам данных
  data.forEach(function(row) {
    var formattedRow = row.map(function(cell) {
      if (cell instanceof Date) { // Проверяем, является ли ячейка датой
        return Utilities.formatDate(cell, Session.getScriptTimeZone(), 'dd.MM.yyyy'); // Форматируем дату
      } else {
        return cell; // Возвращаем текстовые значения без изменений
      }
    });
    
    // Объединяем отформатированные значения в строку и добавляем в документ
    body.appendParagraph(formattedRow.join(' '));
  });
  
  // Завершение работы и открытие нового документа
  DocumentApp.openById(doc.getId());
}
```

### Объяснение скрипта:
1. **Получение данных**: Мы используем `sheet.getDataRange().getValues()`, чтобы получить данные из листа в виде двумерного массива.
2. **Создание документа**: Мы создаем новый документ Google Docs.
3. **Форматирование дат**: При переборе каждой строки мы проверяем, содержит ли ячейка объект `Date`. Если да, то мы используем `Utilities.formatDate()` для форматирования даты в нужный формат (например, "dd.MM.yyyy").
4. **Запись в документ**: Мы объединяем отформатированные значения и добавляем их в документ.

Эта функция решит вашу проблему с извлечением текста и корректным отображением дат в Google Docs. Обязательно замените `'Ваш_ID_таблицы'` на фактический ID вашего Google Sheet.
Возможно, как один из вариантов, заменить getValues() на getDisplayValues() . 

Метод getDisplayValues() отдает данные в том виде, в каком он отображается в ячейках таблицы. Например, если ячейка содержит дату, то указанный метод вернет не какое-то внутреннее представление записанной в ячейку даты, а ее представление, которое видит пользователь в ячейке. ( https://habr.com/ru/articles/529332/ )

getdisplayvalues()
Похожие вопросы