• Можно ли задать счетчик, где условием является ссылка на ячейку?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Получать формулы, парсить и надеяться что там нет INDIRECT()/пользовательских функций/именованных диапазонов и т.п.
    В чём вообще исходная задача? Я такое делал когда в таблице на 100к формул появился цикл, пришлось писать скрипт который строит граф связей по ячейкам.
    Ответ написан
    Комментировать
  • Как избежать дублей сообщений при отправке сообщений через Телеграм бота?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Обычно проблема что onEdit не каждый раз срабатывает и события пропускаются, а тут наоборот.
    По факту каждое редактирование генерирует onEdit событие. Если надо отправлять реже - определитесь по какому параметру фильтровать эти события - по данным, по времени или еще как-то.
    1) Сделать очередь на отправку, отправлять пачкой по достижении какого-то количества
    2) Или запускать раз в минуту отправку
    3) Или блокировать документ на время отправки, если возникает гонка
    Или любая другая логика, сейчас непонятна проблема.
    Ответ написан
    Комментировать
  • Как сделать нужные строки по фильтрам с отображением на новом листе?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Храните данные и правьте в 1/2. Смотрите фильтр в 3. Так можно обойтись только формулой FILTER.
    Если править и в 1/2 и в 3 - то делаете скрипт с функцией onEdit(event) которая будет таскать записи с 3 на 1/2.
    Ответ написан
    Комментировать
  • Как определить в какую сторону повернуты нормали в треугольнке, Внутрь или снаружу?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Скалярное произведение вектора нормали и вектора из противостоящей вершины до точки откуда идёт вектор нормали.
    A-I-B
    B-J-C
    C-K-A
    
    a*CI
    b*AJ
    c*BK

    Положительно = наружу
    Ответ написан
    Комментировать
  • Почему выдает ошибку Service Spreadsheets failed while accessing document with id sheet_id?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    1) Вынесете лист с которым работаете в отдельную переменную вне цикла, нет необходимости получать её каждый раз.
    2) Зачем нужен массив abc? item никак не используется.
    3) Сделайте задержку или SpreadsheetApp.Flush(). Скорее всего не успевает скрипт.
    4) Объединённые ячейки - зло и грабли.
    Ответ написан
    Комментировать
  • Как изменить формулу?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    =ЕСЛИ(ЕОШИБКА(НАЙТИ("сто";A1));"";"сто")&
      ЕСЛИ(ЕОШИБКА(НАЙТИ("один";A1));"";"один")&
      ЕСЛИ(ЕОШИБКА(НАЙТИ("кря";A1));"";"кря")&
      ЕСЛИ(ЕОШИБКА(НАЙТИ("му";A1));"";"му")

    и т.п.
    Ответ написан
    Комментировать
  • Как в итоговую таблицу импортировать данные только из определенной таблицы из предложенного списка таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    соответствующей = ВПР()
    выгружаться = IMPORTRANGE()
    Заведите справочник, ищите по нему id таблицы. Это первый аргумент в IMPORTRANGE(). Второй - это имя_листа + диапазон
    =IMPORTRANGE(ВПР(город;{ВсеГорода\ВсеID};2;0);"Данные!A1")

    город = ссылка на ячейку выбора города
    ВсеГорода - столбец с данными по названиям городов
    ВсеID- столбец с данными по id таблиц
    Данные!A1 - что нужно импортировать
    Ответ написан
    Комментировать
  • Как настроить проставление даты при изменении соседней ячейки в Google Sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Чтобы дата не менялась, нужно копировать данные скриптом и фиксировать дату копирования.
    1) Получить все данные из источника
    2) Убрать все строки (по какому-то ключевому столбцу) которые уже есть в приёмнике
    3) Добавить дату копирования в каждую из оставшихся после фильтра строк
    4) Добавить эти данные в приёмнике
    Ответ написан
  • Как зафиксировать строку в Таблице, которая выводится через iframe?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Не могу утверждать, но скорее всего - никак. Или грузить только данные и рисовать таблицу самому.
    Как-то делал "бекенд табличный", заказчик как раз для сайта его использовал своего.
    Делайте doGet() функцию, в ней передача всей таблицы как json. А на стороне сайта получайте то и отрисовывайте таблицу с любым функционалом.
    Ответ написан
    Комментировать
  • Клавиатуру полностью парализует на несколько минут при нажатии клавиши Q. Предположения?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    99% что это проблема с самой клавиатурой или её шлейфом

    1) Продуть и почистить клавиатуру
    2) Разобрать, посмотреть на состояние шлейфа и коннектора шлейфа, может надо просто переподключить
    3) Попробовать нажимать не на клавиатуру, а на левый угол ноутбука - возможно это отвал чипа какого-нибудь и проблема не с Q, а с платой
    4) Попробовать загрузиться с live-usb и протестировать там
    5) Попробовать внешнюю клавиатуру
    6) Заменить клавиатуру
    Ответ написан
    Комментировать
  • Как разгадать конфигурацию мини-игры с ключами в Hamster Kombat?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    - = пусто
    a-z = плашки
    0 = key

    Скорее всего payload уже и так есть готовый, ищите где он лежит на стороне клиента. Не думаю что отправляются ходы, анализируются и выдаётся результат - мало информации в payload, да и это лишняя нагрузка на сервер. Скорее просто отправляется факт прохождения.
    Ответ написан
  • Простой скетч arduino не работает как надо?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Судя по коду
    lastTime = 0;
    должно быть внутри
    if (millis() - lastTime > loopTime){
    // ...
    };

    Иначе оно раз в цикл принимает значение millis(), потом сразу проскакивает цикл и обнуляется.
    Ответ написан
  • Как применить макрос к нескольким файлам в один клик?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Что-то вроде:
    Sub ProcessFilesInDirectory()
        Dim folderPath As String
        Dim fileName As String
        Dim wb As Workbook
        
        ' Путь к директории
        folderPath = "C:\temp\"
        
        ' Получаем первый файл с расширением .xlsx в директории
        fileName = Dir(folderPath & "*.xlsx")
        
        ' Перебираем все файлы в директории
        Do While fileName <> ""
            ' Открываем файл
            Set wb = Workbooks.Open(folderPath & fileName)
            
            ' Вызываем функцию macros3
            Call macros3()
            
            ' Сохраняем и закрываем файл
            wb.Close SaveChanges:=True
            
            ' Получаем следующий файл
            fileName = Dir
        Loop
    End Sub
    Ответ написан
    1 комментарий
  • Как автоматизировать процесс установки программ на 1000 компьютерв?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Если по-старинке, то ставится на одну машину весь софт, всё настраивается и делается образ акронисом.
    Установить им же, и по сети.
    Ключи должны быть в bios.
    Настройки машины и программ можно накатить обычным скриптом cmd

    PS: я бы автоматизировал это до тех пор, пока это не стало бы так же просто, как позвонить в дверь. Пара лишних действий, даже несколько лишних минут на машину - это плюс месяц работы. Лучше это время потратить на автоматизацию.
    Ответ написан
    Комментировать
  • Как в excel удалить дубликаты с объединением значений соседнего столбца?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Если в Google Sheet:
    =arrayformula(let(
      author;   "@ProgrammerForever";
      keys;       $A$2:$A;
      values;     $B$2:$B;
      
      uni_keys;      sort(unique(FILTER(keys;keys<>"")));
      joined_values; byrow(uni_keys; lambda(key; ЕСЛИОШИБКА(JOIN("; "; filter(values;keys=key)))));
      
      hstack(uni_keys;joined_values)
    ))
    Ответ написан
  • Сколько конкретно битов в одной секции озу?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Конечно они мелкие, а есть техпроцессы ещё мельче

    Не самая ёмкая флешка (на 128Гб), собранная из дискретных транзисторов размерами по 1мм(зернышко проса), будет занимать объём двухэтажного здания с размером комнаты более 10м*10м

    PS: периодически, когда учителем работаю, даю такую задачу ученикам, и с каждым разом даёт более мощный вау-эффект
    Ответ написан
    Комментировать
  • Почему при переносе элементов по DOM происходит их дублирование?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Из документации:
    Description: Insert every element in the set of matched elements after the target.

    Т.е. это не перемещение элемента как таковое, а вставка такого содержимого после каждого элемента из списка. Иначе бы такой элемент вставлялся несколько раз в разные места.
    Ответ написан
    Комментировать
  • Как учитывать рабочее время?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    4 часа в Excel/GSheets это:
    =ваша_дата + 4/24
    Если время работы в пределах 1 рабочего дня, то проверяйте какой час выходит при суммировании. Если больше порога - то ставите верхний порог, а следующая дата - начиная с нижнего порога плюс остаток.
    Что-то вроде:
    =ЕСЛИ(ОСТАТ((A1+B1/24);1)>=18/24; ЦЕЛОЕ(A1) + 18/24; A1+B1/24)

    А если по сути - тут можно порыть в сторону систем счисления и простых линейных уравнений.
    Или сделать ещё проще - с помощью юзерфункции.
    Ответ написан
  • Почему не проходит отладку google apps script?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = ss.getSheetByName("Маршрут");
    let data = sheet.getDataRange().getValues();
    Ответ написан
    Комментировать
  • Почему не удается получить данные методом video.get у некоторых ссылок?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    1) Попробуйте открывать не в браузере, а в постмане; там более чистый запрос - нет кук, можно контролировать заголовки, юзер-агент, реферер и т.п.
    2) Если приходит ответ вида:
    {"response":{"count":0,"items":[]}}
    то, скорее всего, и с токеном и со всем остальным всё ок - что-то не то с данными запроса или с самим ресурсом, который запрашивается. Это 200 ответ, а не ошибка.
    3) Как вариант для проверки - сервис может не отдавать данные по некоторым ip адресам. Предсказать какой будет ip у скрипта невозможно.
    4) Попробуйте сохранить и переиспользовать куки, внедрить в headers нужные заголовки, которые браузер передаёт и т.п.
    5) Перезалейте второе видео, возможно всё-таки есть что-то, что запрещает получать данные по API.
    Ответ написан
    Комментировать