Excel это не сложно
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
20.04.2024, 01:49:02

Войти
Интересные и полезные статьи по работе с Excel и VBA можно найти в разделе ХИТРОСТИ
33 242 Сообщений в 5 457 Тем от 6 758 Пользователей
Последний пользователь: Сергей2662
*
Перейти на сайт Хитрости Надстройка MulTEx Обучающие тренинги Наша группа ВКонтакте
Правила форума Начало Помощь Поиск Календарь Войти Регистрация Выйти
+  Excel это не сложно
|-+  Основные форумы
| |-+  Вопросы по работе в Google-таблицах
| | |-+  Что нужно добавить в скрипт для Гугл таблицы, чтобы он срабатывал только в 3:00
Страниц: [1]   Вниз
Печать
Автор Тема: Что нужно добавить в скрипт для Гугл таблицы, чтобы он срабатывал только в 3:00  (Прочитано 6329 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Irine87
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 20


Просмотр профиля E-mail
« : 18.06.2021, 07:27:28 »

Что нужно добавить в скрипт для Гугл таблицы, чтобы он срабатывал только в 3:00 по МСК?
Сам скрипт:

function onEdit(event) {
  try {
// Определяем текущий лист
    var ss = SpreadsheetApp.getActiveSheet();
// Определяем имя листа
    var sName =  ss.getName();
    if (sName != 'Разовые') {
      return;
    }
    var r = ss.getActiveRange();
    var col = r.getColumn(); // Начало диапазона
    if (col == 1 || col == 2 || col == 5 || col == 11) {}
    else {
      return;
    }
    var row = r.getRow();
    if (row < 3) {
      return;
    }
    var NumRow = ss.getLastRow();
    ss.getRange(3, 1, NumRow - 2, 14).sort([{column: 5, ascending: true},{column: 12, ascending: false},{column: 3, ascending: true}]);
   
    var f = ss.getFilter().getColumnFilterCriteria(11);
    if (!f) {
      f = SpreadsheetApp.newFilterCriteria()
      .setHiddenValues(['Архив'])
      .build();
    }
    var h = f.getHiddenValues();
    if (h.indexOf('Архив') == -1) {
      h.push('Архив');
      f = SpreadsheetApp.newFilterCriteria().setHiddenValues(h).build();
    }
    ss.getFilter().setColumnFilterCriteria(11, f);
  } catch (e) {
    Browser.msgBox('onEdit: ' + e);
  }
}
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #1 : 18.06.2021, 12:36:33 »

чтобы он срабатывал только в 3:00 по МСК?
Так у Вас скрипт вроде бы настроен на запуск при редактировании. Или Вы надеетесь, что редактирование будет именно в 3:00? Улыбка
Может посмотреть в сторону триггеров? Они как раз для этого. Выбираете с периодичность сутки, время 3:00. А в качестве скрипта свой скрипт. Правда, судя по всему у Вас завязка еще и на адрес редактируемой ячейки идет, поэтому я в небольшом замешательстве что именно Вы хотите делать именно в 3:00...
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Irine87
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 20


Просмотр профиля E-mail
« Ответ #2 : 18.06.2021, 16:06:07 »

нужно чтобы сортировка ячеек происходила именно в 3:00 по мск, а не после внесения изменений в таблицу
Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #3 : 18.06.2021, 16:47:04 »

Так просто создайте скрипт сортировки и запускайте его триггером по времени, как я написал ранее. А так же я писал, что этот скрипт надо переделывать под новые условия.
Получиться может что-то вроде этого:
Код: (vb)
function SortTrigger {
  try {
// Определяем текущий лист
    var ss = SpreadsheetApp.getActiveSheet();
// Определяем имя листа
    var sName =  ss.getName();
    if (sName != 'Разовые') {
      return;
    }

    var NumRow = ss.getLastRow();
    ss.getRange(3, 1, NumRow - 2, 14).sort([{column: 5, ascending: true},{column: 12, ascending: false},{column: 3, ascending: true}]);
   
    var f = ss.getFilter().getColumnFilterCriteria(11);
    if (!f) {
      f = SpreadsheetApp.newFilterCriteria()
      .setHiddenValues(['Архив'])
      .build();
    }
    var h = f.getHiddenValues();
    if (h.indexOf('Архив') == -1) {
      h.push('Архив');
      f = SpreadsheetApp.newFilterCriteria().setHiddenValues(h).build();
    }
    ss.getFilter().setColumnFilterCriteria(11, f);
  } catch (e) {
    Browser.msgBox('onEdit: ' + e);
  }
}

а в триггере именно эту функцию(SortTrigger) и надо будет указать для запуска. Только тут попутно момент еще и такой, что все это сможет произойти, если сам документ открыт и активен лист "Розовые".
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Irine87
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 20


Просмотр профиля E-mail
« Ответ #4 : 20.06.2021, 07:33:39 »

Комментарий администратора Не цитируйте сообщения полностью - достаточно выделить нужную фразу и нажать ЦИТИРОВАТЬ. п.п. 4.18 Правил форума

код не работает, выдаает ошибку http://joxi.ru/RmzXbQkcjwOWdA
« Последнее редактирование: 21.06.2021, 11:50:05 от Дмитрий Щербаков(The_Prist) » Записан
Дмитрий Щербаков(The_Prist)
Администратор
Ветеран
*****

Репутация: +485/-0
Офлайн Офлайн

Сообщений: 5 831



Просмотр профиля WWW
« Ответ #5 : 21.06.2021, 11:49:52 »

А Вы текст ошибки не видите? Он пишет, что лишняя открывающая скобка. Проверьте весь код, все ли открывающие/закрывающие скобки на месте.

P.S. И не надо цитировать сообщение полностью - достаточно выделить лишь цитируемую часть сообщения. А в данном случае цитирование вообще лишнее.
Записан

Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Пункты приёма Спасибов:    -41001332272872  -R298726502453
Irine87
Новичок
*

Репутация: +0/-0
Офлайн Офлайн

Сообщений: 20


Просмотр профиля E-mail
« Ответ #6 : 09.08.2021, 09:23:01 »

Спасибо за помощь, проблема решена
Записан
Страниц: [1]   Вверх
Печать
Перейти в:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.21 | SMF © 2006-2011, Simple Machines Valid XHTML 1.0! Valid CSS!
Яндекс.Метрика Рейтинг@Mail.ru