Google Таблицы. Урок 90. Как данные из таблицы Google подставить в текстовый файл Google документы

Поделиться
HTML-код
  • Опубликовано: 16 окт 2024
  • Google Таблицы. Урок 90. Как данные из таблицы Google подставить в текстовый файл Google документы
    Добрый день!
    В этом видео-уроке по Google Spreadsheet (Гугл Таблицам) мы с Вами научимся править текстовые файлы из Google документы, заменять текст на данные из Гугл таблиц.
    function Creator() {
    const docFile = DriveApp.getFileById("1bCHPez1OTRtt7tgmlkYPoV3OC7j1yl1CaRfkltZzcTQ");
    // это файл шаблона
    const tempFolder = DriveApp.getFolderById("19HPiA8XXpCOgTXithaOF3166zq6yOCOi");
    // это директория для новых файлов
    const tempFile = docFile.makeCopy(tempFolder);
    // делаем копию шаблона
    const tempDocFile = DocumentApp.openById(tempFile.getId());
    // открываем созданную копию
    const body = tempDocFile.getBody();
    // тело файла копии
    var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var a1 = list.getRange(1, 2).getValue()
    var a2 = list.getRange(2, 2).getValue();
    var a3 = list.getRange(3, 2).getValue();
    var a4 = list.getRange(4, 2).getValue();

    body.replaceText("{Получатель}", a1);
    body.replaceText("{Адрес получателя}", a2);
    body.replaceText("{Обращение}", a3);
    body.replaceText("{сообщение}", a4);
    tempDocFile.saveAndClose();
    }
    Посетите наш сайт: e-sdelano.ru
    Наш канал в Яндекс Дзен: zen.yandex.ru/...
    Этот канал есть и на RUTUBE: rutube.ru/chan...
    Подписывайтесь на Телеграм (@esdelano): t.me/esdelano
    Буду рад любым пожертвованиям на поддержку канала yoomoney.ru/to...

Комментарии • 111

  • @ЭлеонораНикифорова-е4ц

    Я вас обожаю! Как просто и понятно вы всё объясняете! Спасибо вам огромное!

  • @psergio_it4884
    @psergio_it4884 6 месяцев назад

    Оказывается всё просто и совсем не сложно!
    Спасибо, ждём новых уроков

  • @ОльгаВасиленко-ы2ю
    @ОльгаВасиленко-ы2ю 9 месяцев назад

    Это просто мега круто🎉🎉🎉 огонь спасибо вам

  • @Ten0leg
    @Ten0leg 7 месяцев назад

    Оч полезно. Спасибо!

  • @andreiviltouski2390
    @andreiviltouski2390 4 года назад +8

    Спасибо. Можно ли копии документа автоматически присваивать название, например, что бы в названии документа присутствовало значение кому документ предназначен. Так проще будет их отличать. Спасибо за уроки. Так же было бы интересно узнать про различные методы скриптов, основные команды в этих методах.

    • @esdelano
      @esdelano  4 года назад +4

      Да. Файлы можно переименовывать.
      Я это буду рассказывать в уроке про pdf файлы (это через 1 или 2 урока по таблицам).
      Про методы сделаю отдельный урок. Спасибо за идею

  • @АлексейАнастасиев-э6х

    Благодарю Вас за видео, очень сильно помогли!

    • @esdelano
      @esdelano  3 года назад +2

      Спасибо за Ваш отзыв! Рад что помогло

  • @Silurina1
    @Silurina1 3 года назад

    Спасибо большое!

  • @PavelKnyazev_ptm01
    @PavelKnyazev_ptm01 3 года назад +1

    Потрясающе! Спасибо!!!! Подписался, поделился, пролайкал и спонсировал )) Как можно договориться с Вами о частных уроках под конкретную задачу?

  • @VS-bz2fu
    @VS-bz2fu 3 года назад

    Получилось! Спасибо!

    • @esdelano
      @esdelano  3 года назад

      На здоровье!

  • @НиколайМамонов-ы7б

    Очень пригодилось.А можно вставить в формулу гугл документа данные из таблицы и как это сделать?

  • @itstepkhm3100
    @itstepkhm3100 2 года назад +1

    Добрый день! Подскажите, а как подставить данные с таблицы Google в другую таблицу, без формул, скриптом, чтобы так же копировался файл?

  • @gothic_community
    @gothic_community 5 месяцев назад

    Доброго дня.
    Написал на основе данного скрипта схожий скрипт на 143 перменных, они все однотипные. Всё работает, скрипт выполняет свою функцию, только в получаемом шаблон возникает следующая проблема - начинается перенос страницы.
    Стандартно между последней строкой документа 1 и документа 2 стоят 3 пустых строчки, но почему-то скрипт начинает менять их количестов время от времени и документы съезжают с правильной позицией листа.
    По сути, сделал всё то же самое, как в Вашем видео, только таких листов 20, и у каждого свои 7 индивидуальных перменных и 3 общих для всех страниц, получается на каждой странице по 10 переменных, но вот начинает съезжать, не подскажете что делать?

  • @inhype
    @inhype Год назад

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

  • @alterego5982
    @alterego5982 9 месяцев назад

    Класс. однозначно лайк. а как сделать чтобы таблица добавлялась в шаблон? Таблица должна быть на отдельном листе и лист называться {Лист1} ????

  • @ПашаПитецкий
    @ПашаПитецкий 9 месяцев назад

    Клас

  • @BagirMamedov
    @BagirMamedov 6 месяцев назад

    Можно ли задать имя нового документа сразу же?

  • @andreu811
    @andreu811 Год назад

    Здравствуйте, подскажите пожалуйста как добавить скрипт напротив ячейки строки. (как в конце видео).

  • @vitkonkordvitkonkord865
    @vitkonkordvitkonkord865 2 года назад +3

    Проблема появилась в этой строке
    const tempDocFile=DocumentApp.openById(tempFile.getId());
    я так почитал ниже комментарии. писали что это связано с доступом к файлу/ Но это мой файл созданный на моем гугл диске. Выходил из аккаунта, входил вновь. создавал новые документы - без изменений. Помогите, пожалуйста

    • @esdelano
      @esdelano  2 года назад

      Добрый день! Проверьте правильность указания ID файла. Обратите внимание, что при использовании этой конструкции нужно указывать именно ID файла, а не его имя и не ссылку на него

    • @Leon-bo1kl
      @Leon-bo1kl 2 года назад

      @@esdelano id прописаны правильно. Копии создаются, но не открываются

    • @vitkonkordvitkonkord865
      @vitkonkordvitkonkord865 2 года назад

      @@esdelano я проверял несколько раз. Копии в указанных дирректориях он создает. но не может получается ее открыть что бы заменить текст в них. меня бы устроил и код который просто меняет текст в одном док-файле, без создания копий. может он бы работал у меня...

    • @sergey_5081
      @sergey_5081 2 года назад

      @@vitkonkordvitkonkord865 подтверждаю, у меня такая же проблема, не могу ее решить, откликнитесь кто победил

    • @jackdaniels7309
      @jackdaniels7309 2 года назад

      Та же самая проблема в 8 строке, может на гугл диске что-то изменилось что начала проявляться такая проблема, увидим, может автор подскажет

  • @ТатьянаИзотова-к1н

    Здравствуйте! При попытке использовать метод создания копии файла получаю ошибку TypeError: DriveApp.makeCopy is not a function. Может, она устарела? Что можно использовать вместо неё?

  • @ДмитрийКоробанов
    @ДмитрийКоробанов 8 месяцев назад

    Добрый день. А как сделать чтобы сформированный документ сразу на печать отправлялся?

  • @alexanderkulikov9609
    @alexanderkulikov9609 2 года назад

    Спасибо за уроки, очень полезные. Подскажите, нет ли у вас информации по подобной вставке изображений из Гугл диска ? НАощупь не получилось сделать, хотя прямо чувствую, что близко )

    • @esdelano
      @esdelano  2 года назад

      Добрый день!
      Вы, когда вставляете фото, там есть возможность выбрать вкладку "На диске"

    • @alexanderkulikov9609
      @alexanderkulikov9609 2 года назад

      @@esdelano я про пакетную вставку скриптом.

  • @ДарьяОсипова-щ8н

    спасибо за информативное видео! Столкнулась с проблемой : вот этот пункт const tempDocFile = DocumentApp.openById(tempFile.getId()) - пишет ошибка Код 6 . Файл формируется в папке, но замена не происходит. Подскажите, пожалуйста, как решить проблему. Все ID верно ввела.

    • @АлексейАлександров-м2х9х
      @АлексейАлександров-м2х9х 10 месяцев назад

      та же проблема, только не код 6 а ошибка в строке 6. У вас получилось решить?
      сама ошибка - Exception: The document is inaccessible. Please try again later.

  • @Дмитрий-х4о1ж
    @Дмитрий-х4о1ж 2 года назад +1

    Как то ранее спрашивал про то как при нажатии на старт выгружать данные строки по своим папкам. Сейчас выгружает все в пдф файлы в одну папку а как сделать что бы по разным папочкам все выгружало с присвоением имени папке.

    • @esdelano
      @esdelano  2 года назад +1

      Добрый день!
      Сделаю подобное видео. Чуть позже

    • @Дмитрий-х4о1ж
      @Дмитрий-х4о1ж 2 года назад

      @@esdelano Очень ждем)))

  • @dmitriyzakovorotniy365
    @dmitriyzakovorotniy365 3 года назад +1

    Здравствуйте. Спасибо за Ваши видео. Подскажите пожалуйста, столкнулся с такой проблемой при выполненнии скрипта пишет Ошибка
    Exception: The document is inaccessible. Please try again later.

    • @esdelano
      @esdelano  3 года назад +1

      Добрый день.
      Либо это временная проблема, либо есть проблема с доступом к файлам. При запуске скрипта должно было выйти сообщение, в котором нужно было разрешить доступ к файлам для вашего скрипта. Закройте все приложения (таблицы и документы), зайдите на гугл диск и перелогиньтесь, затем откройте гугл таблицы. Должно всё заработать

    • @dmitriyzakovorotniy365
      @dmitriyzakovorotniy365 3 года назад +1

      @@esdelano К сожалению перелогонился и не помогло ( Ссылается, что ошибка в этой строчке - const tempDocFile = DocumentApp.openById(tempFile.getId());
      Доступ файлам я предоставил

    • @dmitriyzakovorotniy365
      @dmitriyzakovorotniy365 3 года назад +1

      @@esdelano Все, проблему решил) Дело в том, что я брал документ (форму) с другого аккаунта гугл диска, скачал и вставил в тот на котором скрипт. В этом и была проблема. В любом случае, спасибо за обратную связь !)

    • @esdelano
      @esdelano  3 года назад +1

      Ок. Отлично.
      На самом деле можно было открыть доступ для вашего аккаунта с того, где шаблон

    • @Tucha12
      @Tucha12 3 года назад

      @@dmitriyzakovorotniy365 У меня на этом же месте возникла проблема. Только она в другом заключалась, файл был экселевский, решил копипастой в док)

  • @Екатерина-с7л2б
    @Екатерина-с7л2б 2 года назад

    Подскажите, пжл, как создать один документ на основании заполненных строк (около 10 шт). чтобы все заполненные строки попали в один документ в по порядку в табличную часть?

    • @esdelano
      @esdelano  2 года назад

      Добрый день!
      В шаблоне сделайте таблицу на 10 строк + 1 строка для заголовка и туда подставляйте даннын

  • @ЕленаЧерватюк-м2р
    @ЕленаЧерватюк-м2р 2 года назад

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

    • @esdelano
      @esdelano  2 года назад

      Да. Конечно можно. Вы можете в скрипт вставить условие Если (IF)

  • @vitkonkordvitkonkord865
    @vitkonkordvitkonkord865 3 года назад

    Спасибо, но возникли сложности. Каким образом связывается конкретный лист из многолистовой таблицы? GOOGLEдокумент создал с нуля. Скопировал ID, вставил в скрипе в строчку "файл шаблона". короче все по инструкции, но мне кажется что ошибка именно в строке
    var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    нужно ли прописывать где-то имя гугл таблицы и листа? ID указано верно

    • @esdelano
      @esdelano  3 года назад

      Добрый день!
      В этом скрипте собственно и указывается, что данные будут браться именно с активного листа. Т.е. с того, который открыт в момент запуска скрипта.
      Если нужно использовать другой лист, то для переменной list, нужно использовать метод не получения активного листа, а назначения
      .setActiveSheet(...)

  • @ИванПанов-л9м
    @ИванПанов-л9м 3 года назад

    Вечер добрый. Небольшая проблема с переносом даты (дата тсоздана с помощью формулы today) в шаблон. Они почему-то не очень удобного формата. Как это можно решить? Мне необходим числовой. А он переносит на английском месяц и день недели. Помогите пожалуйста

    • @Viazm
      @Viazm 3 года назад +2

      Здравствуйте. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

  • @MonMihail
    @MonMihail 3 года назад

    Добрый день! Можете подсказать, как перед созданием копии шаблона очистить все старые файлы в папке?

    • @esdelano
      @esdelano  3 года назад +1

      Добрый день! Есть два пути:
      1. Вручную очистить (или удалить) папку на Гугл диске
      2. В скрипте прописать удаление папки и ее создание, либо ее очистки: tempFolder.removeFile;
      .

  • @daniilpostnov
    @daniilpostnov 2 года назад

    А как вы сделали кнопку «Сформировать»?

    • @esdelano
      @esdelano  2 года назад +1

      Вставляете рисунок, нажимаете 3 точечки (правый верхний угол рисунка) и назначаете макрос (название вашей функции)

  • @ИВАНИванов-о9ю9к
    @ИВАНИванов-о9ю9к 2 года назад

    Добрый день! Подскажите пожалуйста а где теперь находится редактор скриптов - в меню его сейчас нет

    • @esdelano
      @esdelano  2 года назад +1

      Добрый день!
      Меню "Расширения", далее пункт "App Script"

    • @ИВАНИванов-о9ю9к
      @ИВАНИванов-о9ю9к 2 года назад

      @@esdelano спасибо! Очень понятные и полезные уроки. Коротко и по делу главное. Подписался

  • @ЭкологическийВолонтер

    Подскажите, пожалуйста, а вот эта вся процедура зачем? Для того, чтобы мы одни и те же данные из одной вызгрузки (допустим, нам надо вставлять данные из выгрузки) могли быстро вставлять в разные шаблоны, которые мы подгружаем?

    • @esdelano
      @esdelano  3 года назад

      Да.
      Допустим Вам нужно подготовить кучу одинаковых документов, но с разными данными. Например Вы можете выгрузить контрагентов из 1с.
      Кроме того, вы можете настроить триггер и документы будут формироваться вообще автоматически

  • @artemk.6904
    @artemk.6904 3 года назад

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

    • @esdelano
      @esdelano  3 года назад

      Добрый день! Это не возможно. К сожалению

  • @linfarr7162
    @linfarr7162 Год назад

    Вроде текст процедуры напечатал правильно, но текстовка из экселя не переносится в шаблон документа. Работает только инструмент создания копии. в чем может быть проблема?
    function Creator() {
    const docFile = DriveApp.getFileById("1Qx8LakXrXdhGipQwnzE_IfJXF1CX11aldsoWQFz5S2A");
    //это файл шаблона
    const tempFolder = DriveApp.getFolderById("1GAu8suSuX-Bce_OpmLrzcHksPSA0d8v7");
    //это директория для новых файлов
    const tempFile = docFile.makeCopy(tempFolder);
    //делаем копию шаблона
    const tempDocFile = DocumentApp.openById(tempFile.getId());
    //открываем созданную копию
    const body = tempDocFile.getBody();
    // тело файла копии
    var list = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
    var a1 = list.getRange(1,2).getValue();
    var a2 = list.getRange(2,2).getValue();
    var a3 = list.getRange(3,2).getValue();
    var a4 = list.getRange(4,2).getValue();
    body.replaceText("{Получатель}",a1);
    body.replaceText("{Адрес получателя}", a2);
    body.replaceText("{Обращение}",a3);
    body.replaceText("{сообщение}",a4);

    tempDocFile.saveAndClose();

  • @Mrator2010
    @Mrator2010 3 года назад

    Добрый день. А если несколько видов документов как можно сделать из одних данных множество разных документов? Заранее благодарю

    • @ИванПанов-л9м
      @ИванПанов-л9м 3 года назад +1

      По мне так просто копировать один и тот же скрипт . Просто указывать ид разного шаблона.

  • @alinashyroka4137
    @alinashyroka4137 2 года назад

    Здравствуйте! Подскажите пожалуйста как сделать для этого кода кнопку для мобильной версии!

    • @esdelano
      @esdelano  2 года назад

      В мобильной версии это сделать нельзя.
      Можно настроить запуск скрипта, например с помощью триггер.
      А ещё у меня есть урок о том, как запускать скрипты из мобильной версии. Поищите

    • @alinashyroka4137
      @alinashyroka4137 2 года назад

      @@esdelano смотрела!) Мне нужен именно этот код, для него пробовала сделать триггер, тоже не получилось.
      Подскажите пожалуйста как этот код запускать с моб версии?

  • @АнастасияГлебова-ъ7п

    Добрый день! Подскажите пожалуйста, а как можно сделать чтобы данные вносились со всего столбца, а не из конкретной ячейки?

    • @esdelano
      @esdelano  3 года назад

      Только если циклом делать.

  • @Valerichlg
    @Valerichlg 2 года назад

    У меня когда вставляется дата, то она очень некрасивая получается. Например если в экселе ввожу 27.05.2022, то в текстовом получается такое Fri May 27 2022 10:00:00 GMT+0300 (Москва, стандартное время)

    • @Valerichlg
      @Valerichlg 2 года назад +1

      Нашел в комментариях этот метод и помогло: вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

    • @inhype
      @inhype Год назад

      @@Valerichlg спасибо!!!

  • @prestaden
    @prestaden 3 года назад

    Все хорошо, только столкнулся с такой проблемкой:
    1. Переменные данные, не вставляются в колонтитул :(
    2. Вместо даты типа хх.yy.zzzz вставляются данные типа - Fri Dec 31 2021 00:00:00 GMT+0300 (Moscow Standard Time) как с этим бороться? СПАСИБО!!!

    • @Viazm
      @Viazm 3 года назад +1

      2. попробуйте вместо " .getValue()" при присваивании значений переменным использовать " .getDisplayValue()".

    • @Gabilen
      @Gabilen Год назад

      @@Viazm спасибо помогло!!!

  • @vgordenkov
    @vgordenkov 11 месяцев назад

    как добавить данные из конкретной таблицы? очень много у меня открытых таблиц

  • @13Tonyn
    @13Tonyn 3 года назад

    Здравствуйте. Спасибо за видео. Как с вами можно связаться?

    • @esdelano
      @esdelano  3 года назад +1

      Добрый день! Почта есть в описании канала

    • @13Tonyn
      @13Tonyn 3 года назад

      @@esdelano
      Сайт вижу ссылки на канал вижу, а почту не вижу((

  • @YanaAvd-h2z
    @YanaAvd-h2z 3 года назад +1

    Спасибо огромное за урок! У меня возникла проблема с выполнением скрипта, может кто-то в курсе как решить. Я перепроверила ID, все доки на моем аккаунте, перелогиниться тоже пробовала ничего не помогает((
    Exception: You do not have permission to call DocumentApp.openById. Required permissions:

    • @esdelano
      @esdelano  3 года назад

      В имени файла нет ошибки? (Может ID не верно откопировали?)
      Попробуйте в файле открыть доступ всем у кого есть ссылка

    • @КираБорисова-б8ж
      @КираБорисова-б8ж 10 месяцев назад

      У вас получилось решить эту проблему?

  • @pacifist1937
    @pacifist1937 2 года назад

    можно ли перенести изображение из таблицы в шаблон?

    • @esdelano
      @esdelano  2 года назад

      Нет. Можно только ссылку на изображение из интернета

  • @Gabilen
    @Gabilen Год назад

    Получилось объединение гугл док и таблицы?

    • @esdelano
      @esdelano  Год назад +1

      По этой теме есть урок на канале

    • @Gabilen
      @Gabilen 2 месяца назад

      @@esdelano если несложно ссылочку можно?

  • @assetkussainov
    @assetkussainov 3 года назад

    Здравствуйте! Можно ли настроить сохранение названия файла с порядковым номером ("письмо 1", "письмо 2")? И если да, то как можно настроить автоматически создавать файл со следующим номером после уже созданных (есть письмо 1, письмо 2, надо создать письмо i+1)

    • @esdelano
      @esdelano  3 года назад +1

      Добрый день.
      Можно переменную с порядковый номером последнего документа хранить где-нибудь на листе.
      Считывать его. Дальше используя цикл сохранять нужное количество документов и опять сохранять переменную на листе.
      Но!
      Можно сделать проще.
      Сохраняйте всё время под одним именем. Система автоматически добавит к названию номер копии.

  • @romhikpomhik
    @romhikpomhik 2 года назад

    А как можно подставлять фото, если оно приходит в виде ссылки на гугл диск?

  • @ЮлияКозырева-о3л

    Здравствуйте! помогите решить проблему - при назначении скрипта кнопке "выполнить" пишет, что такого скрипта нет, хотя в списке я его вижу

    • @esdelano
      @esdelano  Год назад

      Проверьте пожалуйста написание. Возможно пробел

    • @ЮлияКозырева-о3л
      @ЮлияКозырева-о3л Год назад

      @@esdelano нет, все верно, перепроверила, написала по другому, все равно не видит((

    • @ЮлияКозырева-о3л
      @ЮлияКозырева-о3л Год назад

      @@esdelano и еще проблема, все вставленные фрагменты не на своих местах. Порядок внесения в скрипт имеет значение? Должно быть ровно так, как это в договоре прописано? Если какой то текст повторяется, это надо так же неск раз писать?
      Спасибо за помощь!

  • @Анастасия-ы8р5и
    @Анастасия-ы8р5и 2 года назад

    Как сделать кнопку Сформировать в гугл экселе?

    • @esdelano
      @esdelano  2 года назад

      Добрый день!
      Можно нарисовать, например прямоугольник и назначить ему выполнение макроса

  • @antonponomarev5382
    @antonponomarev5382 Год назад

    У меня в Инструментах нет редактора скриптов. Что делать?

  • @PavelKnyazev_ptm01
    @PavelKnyazev_ptm01 3 года назад

    При переносе процентов из гугл таблицы они в гугл документах выглядят как "доли". Т.е. 20% становится 0,2

    • @esdelano
      @esdelano  3 года назад

      Попробуйте использовать другой формат в таблицах, например %

    • @PavelKnyazev_ptm01
      @PavelKnyazev_ptm01 3 года назад

      @@esdelano именно их и пробовал. пришлось умножать на число и делить на 100, тогда в итоге получилось

  • @opavtoopavto
    @opavtoopavto Год назад

    ругается на ((( Exception: Unexpected error while getting the method or property getFolderById on object DriveApp.

    • @овечка-ц2ц
      @овечка-ц2ц 10 месяцев назад

      скажите, пожалуйста, у вас получилось исправить данную проблему? у меня тоже такая ошибка