Ответы пользователя по тегу Google Sheets
  • Как преобразовать параметр с текстового значения в числовой в Гугл таблице?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Функция IMPORTXML имеет третий параметр, который позволяет вам вернуть значения с типами.

    Например,

    =IMPORTXML(ссылка; запрос_xpath; 'ru-RU')

    https://support.google.com/docs/answer/3093342?hl=ru

    65ed8b890a9ae239938334.png
    Ответ написан
    Комментировать
  • Ошибка в скрипте при создании файлов по шаблону и информации из гугл таблицы?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Эта ошибка возникает из-за того, что вы делаете копию файла в цикле и открываете ее для редактирвоания. Сервис Документов не такой скорый как китайский поезд, поэтому, не всегда это работает.

    Попробуйте брать файл шаблона в цикле, хоть это и неэффективно
    Попробуйте добавить паузу после сохранения

    Хорошей таблетки для этой проблемы нет. Может быть только если использовать Advanced Service Docs
    Ответ написан
    Комментировать
  • Как в сводной таблице посчитать количество уникальных элементов?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Он правильно считает. Итог идет из расчета по родительской группе. Вы же хотите в итоге вывести суммму униакльных по группам, как я понимаю.
    Ответ написан
    Комментировать
  • Как скрыть лист от обычных читателей?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Скорее всего никак. Вы можете опубликовать отдельно лист, но внешний вид будет немного другим. https://support.google.com/docs/answer/183965?hl=ru
    Ответ написан
    1 комментарий
  • Где ошибка в формуле?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Ошибка в формате данных, где-то числа, где-то строки, где-то даты.

    Как вариант, тут должна быть точка с запятой

    IMPORTRANGE("..."; "...")

    Задавать вопросы в такой форме запрещено правилами.
    Ответ написан
    2 комментария
  • Как объединить две Гугл Таблицы в одну таблицу Excel?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Ваш вариант подходящий.

    Что еще вы ожидали услышать?
    Ответ написан
    Комментировать
  • Как перенести информацию?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Как я понимаю, решение

    =ARRAYFORMULA(QUERY({Regist!C2:C&Regist!B2:B\VALUE(Regist!A2:A)\Regist!B2:E};"Select Col1, avg(Col6) where Col5 matches'FIT' and Col2="&MAX(Regist!A2:A)&" group by Col1";0))
    Ответ написан
    Комментировать
  • Как получить предпоследнюю дату из списка по совпадениям в другом столбце?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Мне кажется, что эту задачу можно решить через SORTN, но вот что первое приходит в голову

    =LET(
      places;UNIQUE(A2:A);
      dates;BYROW(places;LAMBDA(_p;TO_DATE(INDEX(SORT(FILTER(B2:B;A2:A=_p);1;0);2))));
      {places\dates}
    )


    65d748ec053f9013780103.png

    Ссылка на Таблицу с примером https://docs.google.com/spreadsheets/d/1zPuzdN7EtT...
    Ответ написан
    1 комментарий
  • Как создать условие/скрипт/макрос для автоматического создания чекбоксов?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Вот этот простой код вставляет чекбоксы в заданный диапазон

    /**
     *
     * @param {GoogleAppsScript.Spreadsheet.Range} range
     * @returns
     */
    function insertCheckBoxesToRange_(range) {
      return range.insertCheckboxes();
    }


    Пример использования

    function userActionInsertCheckBoxes() {
      const sheet = SpreadsheetApp.getActive().getSheetByName('Вставить чекбокс скриптом');
      sheet.appendRow(['']);
      const lr = sheet.getLastRow() + 1;
      const range = sheet.getRange(`${lr}:${lr}`);
      insertCheckBoxesToRange_(range);
    }


    65d59b0fd1a2b045755380.png

    Ссылка на Таблицу с примером https://docs.google.com/spreadsheets/d/1zPuzdN7EtT...
    Ответ написан
    Комментировать
  • Возможна ли фильтрация и отображение определенных данных?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Пример недоступен.

    Из описания ясно, что вам потребуется парсить строки времени вида 00:00-06:00. Далее необходимо значение перевести в числа, т.к. это самый простой способ не ошибиться в сравнении и уже к этим данным наложить FILTER

    Если речь идет о фильтре данных, то нет, он не будет обновлять свои результаты, вам придется его переприменить.
    Ответ написан
    Комментировать
  • Реально ли написать скрипт для конвертации?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Да, это реально. Не видно никаких препятствий. Плюс, Apps Script умеют парсить xml в JS, так что это возможно.

    Как примерно реализовать:

    1. Получить данные из файла EPG через UrlFetch
      const xml = UrlFetchApp.fetch(url).getContentText()

    2. Распарсить данные через XMLService const document = XmlService.parse(xml)
    3. Получить текущие данные из Таблицы SpreadsheetApp, getDataRange().getValues()
    4. Сравнить с полученными данными из xml
    5. Если есть разница, то обновить Таблицу SpreadsheetApp, getDataRange().setValues()
    Ответ написан
    2 комментария
  • Почему происходит ошибка импорта?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    К сожалению, это может быть особенность хранения данных на стороне Гугл.

    Варианты, что можно попробовать:
    • Сделать копию проблемной Таблицы и подключить копию
    • Разгрузить проблемную Таблицу, возможно в ней много расчетов
    • Попробовать уменьшить количество потребителей конечной Таблицы (пользователей)
    • Попробовать уменьшить количество потребителей проблемной Таблицы (IMPORTRANGEей)
    Ответ написан
    Комментировать
  • Как отредактировать скрипт, чтобы он подставлял данные из Таблицы в Документ?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Предлагаю использовать универсальную функцию заполнения документа

    /**
     *
     * @param {GoogleAppsScript.Document.Document} doc
     * @param {Record<string,unknown>} data
     */
    function fillDoc_(doc, data) {
      const body = doc.getBody();
    
      Object.entries(data).forEach(([key, value]) => {
        body.replaceText(`(?i){{${key}}}`, value);
      });
    
      body.replaceText(`(?i){{.*?}}`, '');
    }


    Теперь вы можете поставить в эту функцию Документ, например, вот так создается новый файл из шаблона

    const file = DriveApp.getFileById('192avJeIyh524ofvFvuQRaf9QPyqH7FKBEzwNLoHJa-g').makeCopy();
    const doc = DocumentApp.openById(file.getId());


    Важно, заменяемый текст в шаблоне должен быть обернут в {{заменяемый текст}}.


    Так же нужно создать объект данных для функции. Например, вот так

    const values = SpreadsheetApp.getActive()
      .getRange("'Заполнение Документа данными из Таблицы'!2:2")
      .getDisplayValues()[0];
    const data = {
      заголовок: 'тестовый заголовок',
      имя: values[1],
    };


    Вызов функции прост

    fillDoc_(doc, data);

    Полный пример шаблона тут https://docs.google.com/document/d/192avJeIyh524of...

    Полный пример в Таблице https://docs.google.com/spreadsheets/d/1zPuzdN7EtT...
    Ответ написан
    Комментировать
  • Можно ли использовать интерфейс Таблиц для своего сайта?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Заголовок не отражает содержимое вопроса, так что ответов положительных и не будет.

    Это вопрос не про встраивание Таблиц на сайт, а про использование интерфейса Таблиц для своих данных. Кликбейт

    1. Нет, т.к. интерфейс Таблиц неотрывно связан с содержимым сервиса Таблиц, они не предназначены для работы с внешними данными
    2. Только если встраивать Таблицы через iframe или же писать свой интерфейс, поддерживаемый Google Sheets API
    3. Нет, см. п. 1
    4. Нет, но можно реализовать как в п. 2
    Ответ написан
    Комментировать
  • Как просмотреть содержимое сгруппированных строк в режиме гостя?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Только через скрипт или сделать копию Таблицы, если это возможно. Можно еще попробовать импортировать данные из этого листа в другой лсит/Таблицу через формулу IMPORTRANGE.
    Ответ написан
    Комментировать
  • Не могу определится в верном выборе триггера simple or installable?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Триггера "onEdit" не существует. Существует простой и устанавливаемый триггер события "Edit". onEdit - зарезервированное имя функции для простого триггера.

    Простой триггер срабатывает для каждого, устанавливаемый - для того, кто установил.

    Попытка узнать имя пользователя через простой триггер является своего рода раскрытием данных о пользователе, что точно не может использоваться как надежное решение.

    В обычных Таблицах (не Workspace), если пользователь вам не представился, не ищите возможности его идентифицировать, Гугл все время добавляет ограничения на эти действия, поэтому потом вы свой "прекрасный код" будете называть "костылями", а потом он вообще перестанет работать. Это бесплатно, а значит ограничено.
    Ответ написан
    Комментировать
  • Можно ли обойти ограничение в 1000 ячеек на график?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Для визуализации больших данных используйте Google Looker, который работает напрямую с Таблицами.
    Ответ написан
    Комментировать
  • Как скриптом достать ссылку из ячейки?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Самое простое, это взять ячейку, у нее есть метод getRichTextValue(), возвращаемый объект имеет метод getLinkUrl().

    cell.getRichTextValue().getLinkUrl();

    Извлечь ссылки из диапазона

    /**
     *
     * @param {GoogleAppsScript.Spreadsheet.Range} ref
     */
    function extractLink_(ref) {
      const richTextValues = ref.getRichTextValues();
      return richTextValues.map((row) =>
        row.map((cell) => {
          return cell.getLinkUrl();
        }),
      );
    }


    65d0548379b9c072210595.png

    Пример в Таблице https://docs.google.com/spreadsheets/d/1zPuzdN7EtT...
    Ответ написан
    Комментировать
  • Как открыть почтовый клиент через макрос?

    oshliaer
    @oshliaer Куратор тега Google Apps Script
    Google Products Expert
    Решение Григорий Боев https://qna.habr.com/answer?answer_id=2404940#answ... единственное.

    Более удобным может быть настройка Gmail на отправку писем от имени других аккаунтов, даже аккаунтов Microsoft Live или как там сейчас их MySpace называется.

    Еще вариант, забирать данные из Таблицы вашим клиентом Outlook, который, тоже содержит "макросы" и прочее, прочее. На Таблицах и Скриптах свет клином не сошелся, хоть они и самый удобный инструмент.
    Ответ написан
    Комментировать
  • Форма перестала записывать данные в таблицу ответов. Как исправить?

    oshliaer
    @oshliaer Куратор тега Google Sheets
    Google Products Expert
    Вы не должны никаким образом редактировать Таблицу. Редактируйте Форму, т.к. она источник данных.

    Выгрузите Форму в новую Таблицу и увидите все прежние данные. Новые ответы также будут приходить.

    Еще раз: не меняйте данные в Таблице на листе, куда привязана Форма - это неверное понимание механизма работы с данными. Соблюдайте ПРФ https://gist.github.com/oshliaer/45242e42d50a39b0a...
    Ответ написан
    2 комментария