Задать вопрос
vladbeet
@vladbeet
Начинающий прогер

Как записать данные в google таблицу по скрипту?

Коллеги, изучаю прогу и решил написать небольшой скрипт для гугл таблиц, который парсит мой новосозданный календарь на предмет сделанных задач. Логика простая: скрипт открывает таблицу и календарь, сравнивает задачи с одинаковыми названиями из таблицы (столбик Б) и календаря, а потом вписывает в столбик С значение "сделано" или "в работе" в зависимости от описания задачи в календаре. Скрипт как бы выполняется, но записи не происходит, кто-то с таким сталкивался?

function updateRegistry() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Реестр');
  var tasks = sheet.getRange('B2:B').getValues().flat().filter(String);
  var calId = '19f51079698a04d79e4c33156172abd5eea83a700e3c4456d2effe7ebd5e0e7d@group.calendar.google.com';
  var cal = CalendarApp.getCalendarById(calId);
  if (!cal) {
    var calendars = CalendarApp.getCalendarsByName('exampleCalendarNameHere');
    cal = calendars[0];
  }
  var events = cal.getEvents(new Date('2022-01-01T00:00:00Z'), new Date('2022-12-31T23:59:59Z'));
  var eventsWithTasks = events.filter(function (event) {
    return tasks.includes(event.getTitle());
  });
  for (var i = 0; i < eventsWithTasks.length; i++) {
    var event = eventsWithTasks[i];
    var index = tasks.indexOf(event.getTitle());
    if (index != -1) {
      if (event.getDescription().toLowerCase().indexOf('сделано') != -1) {
        sheet.getRange(index + 2, 3).setValue('сделано');
      } else {
        sheet.getRange(index + 2, 3).setValue('в работе');
      }
    }
  }
  SpreadsheetApp.flush();
}
  • Вопрос задан
  • 202 просмотра
Подписаться 2 Простой Комментировать
Решения вопроса 1
oshliaer
@oshliaer Куратор тега Google Apps Script
Google Products Expert
Это не вопрос, а задание по отладке.

Как вариант, у вас не происходит вход в инструкцию, которая отвечает за запись в Таблицу, поэтому не не сохраняет.

Используйте инструменты отладки Apps Script, такие как дебаггер и логгер для поиска проблемы.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@5465
В коде присутствует вызов SpreadsheetApp.flush(), который сохраняет все несохраненные изменения в таблице. Однако, я не вижу в коде вызова метода save() для сохранения изменений в таблице. Возможно, это может быть причиной того, что изменения не сохраняются.

Попробуйте добавить следующую строку после вызова setValue():

sheet.save();

Также убедитесь, что у вашего скрипта есть права на редактирование таблицы. Если скрипт не имеет необходимых прав, он не сможет сохранить изменения в таблице.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы