Задать вопрос
  • Как сохранять в гугл таблицу список значение ячейки, которое постоянно меняется?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Есть много способов. Например, в onEdit брать значение и сохранять в отдельном месте. Или вставлять строку.
    Ответ написан
    Комментировать
  • Как создавать только 1 документ при переносе данных из гугл таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    .makeCopy()
    В этом месте и создаётся файл.

    Чтобы он не создавался, добавьте проверку на существование. Что-то вроде:
    let fileName = 'Заявка № ' + number;
    if (!DriveApp.getFilesByName(fileName ).hasNext()){
      return;
    };
    Ответ написан
    Комментировать
  • Как добавить в Google Docs счетчик подписчиков из пабликов ВК?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Ваш адрес возвращает:
    {"error":{"error_code":5,"error_msg":"User authorization failed: no access_token passed.","request_params":[{"key":"group_id","value":"${194603548}"},{"key":"v","value":"5.131"},{"key":"method","value":"groups.getMembers"},{"key":"oauth","value":"1"}]}}

    Просит "User authorization failed: no access_token passed"

    UrlFetchApp имеет второй параметр options, там (скорее всего) и надо в headers передать Bearer или другой токен
    Ответ написан
    Комментировать
  • Как посмотреть все открытые документы в google docs (у другого пользователя)?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    • Если есть доступ к аккаунту - зайти в него и посмотреть все доступные.
    • Если доступа нет - можно посмотреть пересечение ваших и его доступов. Т.е. взять все файлы свои и посмотреть есть ли у него доступ тоже.

    Можно фильтрами в поиске, можно скриптами, используя DriveApp/DriveApi
    Ответ написан
    Комментировать
  • Как дополнить формулу =QUERY на вывод кол-во уникальных значений с их подсчетом?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    3 раза примените формулу
    =let(
      calcCount; lambda(data; QUERY({data}; "
        SELECT Col1, COUNT(Col1)
          WHERE Col1 IS NOT NULL
          GROUP BY Col1
      "));
      HSTACK(calcCount(b4:b); calcCount(c4:c); calcCount(e4:e))
    )
    Ответ написан
    Комментировать
  • Как написать формулу чтоб из диапазона достать уникальные значения в один столбец?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    TOCOL делает столбец из данных.
    =QUERY(
      TOCOL(A:B);
      "SELECT Col1, COUNT(Col1)
        WHERE Col1 IS NOT NULL
        GROUP BY Col1
        ORDER BY COUNT(Col1) DESC
        LABEL Col1 'Кто', COUNT(Col1) 'Кол-во'
      "
    )
    Ответ написан
    4 комментария
  • Чем протестировать матплату?

    ProgrammerForever
    @ProgrammerForever Автор вопроса
    Учитель, автоэлектрик, программист, музыкант
    Рассказываю результат. Оказалась мёртвой встройка. Отключил в BIOS, поставил видеокарту внешнюю, всё работает. Поставил Ubuntu, поработает еще старичок.
    Всем спасибо за участие!
    Ответ написан
    Комментировать
  • Артефакты на экране. Что делать?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Сделать скриншот - это сразу отметёт половину случаев.
    Если артефакты и на скрине - умерла видеокарта. Если скрин хороший - помер монитор/кабель.
    Попробовать ещё запустить другую ОС, liveUsb любой сделать и попробовать, или просто в BIOS настройки зайти и там посмотреть - это может быть глюк операционки или драйверов.
    Ответ написан
    Комментировать
  • Какую формулу можно использовать для переноса данных диапазона в рамках одного листа?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    =ArrayFormula(A1:C10)
    A1:C10 - что копируем
    ввести формулу в левую верхнюю ячейку куда копируем
    Ответ написан
    Комментировать
  • Может ли выключатель не полностью проводить электрический ток?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Это самый плохой вариант - нет перегрузки, нет замыкания, а есть дуга. Нагрев есть, защиты - нет. Соответственно всё подсказали уже - отключить, проверить, зачистить/заменить/протянуть.
    Ответ написан
    Комментировать
  • Как снять сигнал с выхода на тахометр от ЭБУ автомобиля, при помощи Arduino?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Лучше всего взять готовую схему для подключения, защиты, согласования. Смотрите схемы ЭБУ, их прилично. Январь, Бош, SECU и т.д.
    Ответ написан
    Комментировать
  • Как вставить дату ячейку с помощью ПСТР()?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    ТЕКСТ() для форматирования
    ARRAYFORMULA() для обработки диапазонов
    ЕСЛИ() для того чтобы считало только по данным, а не пустоту
    =ArrayFormula(ЕСЛИ(A:A="";;"№"&A:A&" от "&ТЕКСТ(B:B;"dd.MM.yyyy")))
    Ответ написан
    Комментировать
  • Как настроить "автоматически расширяемый" диапазон в условном форматировании?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    При вставке строк, удалении строк, копировании ячеек, добавлении строк через "Вставить строки ниже" в уже готовом правиле автоматически меняется диапазон - автоматом расширяется и сжимается исходя из логики изменений структуры. Причем если было A1:A10, например, то при добавлении строки в 5 позиции будет A1:A11 в итоге.
    Я бы сказал, что это не баг, а фича. Отследите после чего появляются дефрагментированные диапазоны и не делайте так.
    На крайний случай - сделайте скрипт который будет обновлять условное форматирование.
    Ответ написан
    Комментировать
  • Как собрать данные с помощью Importxml?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Посмотрите что вообще сервер отдает. Возможно сайт грузится динамически. Вот мой старый код, должен помочь
    /**
    * Открывает URL и возвращает код страницы
    * Telegram - @ProgrammerForever
    *
    * @param {string} URL URL который нужно открыть
    * @param {boolean} isCut Указывакт, нужно ли обрезать страницу до 50000 символов по длине, по умолчанию false
    * @param {boolean} noScript Указывакт, нужно ли удалять скрипты из кода
    * @return Исходный код страницы
    * @customfunction
    */
    function getHTML(URL,isCut,noScript) {
      if ((URL === undefined)||(URL == "")) { return "#ОШИБКА Пустой URL";};
      if (isCut === undefined) {var isCut=true;};
      if (noScript === undefined) {var noScript=true;};
      if (URL.map){     //Если задан диапазон
        return URL.map(getHTML);
      }else{
        try {
          var payload = {
            'rand':(new Date()).getTime()
          };
          var headers={
            'Connection': 'keep-alive',
            'Cache-Control': 'max-age=0',
            'Upgrade-Insecure-Requests': 1,
            'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.142 Safari/537.36',
            'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7'
          };
          var options = {
            'method' : 'get',
            'headers' : headers,
            'payload': payload
          };
          
          var response = UrlFetchApp.fetch(URL,options);
          var charset=response.getAllHeaders["charset"];
          //var responseText=response.getContentText(charset?charset:"windows-1251");
          var responseText=response.getContentText(charset?charset:"UTF-8");
          if (noScript){ 
            responseText=responseText.replace(/<script[^>]*>(?:(?!<\/script>)[^])*<\/script>/gmi,"");
            responseText=responseText.replace(/<!--.*?-->/gmi,"");
            responseText=responseText.replace(/<link.*?\/>/gmi,"");
            responseText=responseText.replace(/<meta.*?\/>/gmi,"");
            responseText=responseText.replace(/[\n\r\t]/gmi,"");
            
          };
          if (isCut&&(responseText.length>50000)){return responseText.substring(0,50000);}else{return responseText;};
        } catch (err) {
          //return JSON.stringify(err);
          return "#ОШИБКА "+err.message;
        };
      };
    };
    Ответ написан
  • Почему Левый стик на геймпаде тянет Правый стик?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Скорее всего непропай или кольцевые трещины. Попробуйте пропаять выводы потенциометров стика.
    Как вариант еще- проверить питание, добавить конденсаторы в питание, переключить на другой порт.
    Проверить на другом компьютере или на сайте проверки джойстиков.
    Ответ написан
    Комментировать
  • Как реализовать debounce для поля ввода, чтобы ограничить количество вызовов API в JavaScript?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Отключать и ставить таймер на выполнение каждый вызов
    const input = document.getElementById("search");
    let searchdDebounceTimerHandler;
    
    input.addEventListener("input", (e) => {
        clearTimeout(searchdDebounceTimerHandler); // Если ввод быстрый, удаляем выполнение функции каждый раз
        searchdDebounceTimerHandler = setTimeout(() => {
            fetchSuggestions(e.target.value);
        }, 1000); // Сработает через секунду от последнего нажатия
    });
    Ответ написан
    Комментировать
  • Как починить данную поломку своими руками?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Покупайте экран и меняйте.
    Экран стоит 1000р на али, клей b7000 рублей 300
    Проще и надежней - отнести в сервис
    Ответ написан
    Комментировать
  • Как узнать частоту работы радичастотного пульта ДУ?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    По 4*длинны антенны можно попробовать посчитать.
    f = c / lambda = (3*10^8) / (4*l_ant_m) = (7500 / l_ant_mm) MHz
    Ответ написан
    Комментировать
  • Как программно написать триггер, который будет запускать макрос, при условии редактирования определенной ячейки на определенном листе?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Только я раз 10 этот код скидывал здесь.
    /**
     * Возникает при изменении ячейки
    * @param {e} event event-объект https://developers.google.com/apps-script/guides/triggers/events?hl=ru
     * [ ProgrammerForever (c) 2020 ]
     * @return Не возвращает значений
     */
    function onEdit(event) {
      var sheet = event.source.getActiveSheet();//Текущий лист
      var address = event.range.getA1Notation().toUpperCase();//Адрес ячейки
      var row = event.range.getRow();      //Номер строки
      var col = event.range.getColumn();  //Номер столбца
      var newValue = event.value;            //Новое значение
      var oldValue = event.oldValue;        //Старое значение
      var userEmail = event.user.getEmail();//Пользователь(работает только при вручную назначенном триггере)
      
      if((col===1)&&(row===1)&&(sheet.getName==="Sheet1")){
        // Что-то делаем
      };
    };
    Ответ написан
    Комментировать
  • Какой набор отверток взять для электроники?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Если крутить много и несильно - Xiaomi электроотвертка. Полгода пользуюсь - часто выручает при ремонте мелкой техники.
    Для техники покрупнее купил рукоятку dexter в Леруа и сменные "биты". Качество неплохое, цена тоже.
    Ответ написан
    Комментировать